diff --git a/modules/home-manager/pluto.nix b/common/home/default.nix similarity index 55% rename from modules/home-manager/pluto.nix rename to common/home/default.nix index 38fc008..d179928 100644 --- a/modules/home-manager/pluto.nix +++ b/common/home/default.nix @@ -1,19 +1,30 @@ { - config, pkgs, inputs, lib, ... -}: { +}: let + spicePkgs = inputs.spicetify-nix.packages.${pkgs.system}.default; +in { imports = [ + ./swayidle.nix ./vim/default.nix + ./firefox.nix + ../rice/ags + ../rice/hyprland # ../rice/sway + ../rice/gtk.nix + ../rice/kitty.nix # ../rice/waybar # ../rice/dunst.nix + ../rice/anyrun + ../rice/rio.nix + ../rice/wofi.nix ../shell - # inputs.catppuccin.homeManagerModules.catppuccin + inputs.spicetify-nix.homeManagerModule + inputs.catppuccin.homeManagerModules.catppuccin ]; nixpkgs = { @@ -26,7 +37,15 @@ ]; }; - # catppuccin.flavour = "mocha"; + gtk.catppuccin.cursor.enable = false; + + nix.gc = { + automatic = true; + frequency = "weekly"; + options = "--delete-older-than 30d"; + }; + + catppuccin.flavor = "mocha"; # This value determines the Home Manager release that your configuration is # compatible with. This helps avoid breakage when a new Home Manager release @@ -38,26 +57,26 @@ home.stateVersion = "23.11"; # Please read the comment before changing it. home.packages = [ + pkgs.wofi pkgs.dconf + pkgs.wl-clipboard + pkgs.swaybg + pkgs.pavucontrol + pkgs.wlogout + pkgs.sway-audio-idle-inhibit + pkgs.grim + pkgs.slurp + pkgs.xfce.thunar + pkgs.feh + pkgs.nitch pkgs.nix-output-monitor + pkgs.fastfetch - inputs.nixpkgs.legacyPackages.${pkgs.system}.nh + pkgs.nh + pkgs.dwl pkgs.killall - (pkgs.writeShellScriptBin "rebuild" '' - #!${pkgs.bash}/bin/bash - set -e - pushd ~/nixos/ - alejandra . &>/dev/null - git add . - echo "[REBUILD]: rebuilding nixos" - nh os switch - gen=$(nixos-rebuild list-generations | grep current) - git commit -am "$gen" - git push origin main - popd - '') ]; home.sessionVariables = { @@ -65,27 +84,7 @@ }; xdg.enable = true; - - programs.zoxide = { - enable = true; - enableZshIntegration = true; - options = ["--cmd cd"]; - }; - - programs.btop = { - enable = true; - # catppuccin.enable = true; - }; - - programs.lazygit = { - enable = true; - # catppuccin.enable = true; - }; - - programs.fzf = { - enable = true; - # catppuccin.enable = true; - }; + # programs.nixvim = ./vim.nix; # Let Home Manager install and manage itself. programs.home-manager.enable = true; diff --git a/env/common/fonts.nix b/env/common/fonts.nix deleted file mode 100644 index 4235fdd..0000000 --- a/env/common/fonts.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - pkgs, - nixpkgs, - ... -}: { - fonts = { - packages = with pkgs; [ - material-icons - material-design-icons - roboto - work-sans - comic-neue - source-sans - twemoji-color-font - comfortaa - inter - lato - lexend - jost - dejavu_fonts - iosevka-bin - noto-fonts - noto-fonts-cjk - noto-fonts-emoji - jetbrains-mono - (nerdfonts.override {fonts = ["Iosevka" "JetBrainsMono"];}) - ]; - - enableDefaultPackages = false; - - # this fixes emoji stuff - fontconfig = { - defaultFonts = { - monospace = [ - "Iosevka" - "Iosevka Nerd Font Complete Mono" - "Iosevka Nerd Font" - "Noto Color Emoji" - ]; - sansSerif = ["Inter" "Noto Color Emoji"]; - serif = ["Noto Serif" "Noto Color Emoji"]; - emoji = ["Noto Color Emoji"]; - }; - }; - }; -} diff --git a/env/wayland/default.nix b/env/wayland/default.nix deleted file mode 100644 index 0b84a75..0000000 --- a/env/wayland/default.nix +++ /dev/null @@ -1,74 +0,0 @@ -{ - pkgs, - inputs, - ... -}: { - imports = [../common/fonts.nix]; - - environment.etc."greetd/environments".text = '' - bspwm - Hyprland - ''; - - services = { - greetd = { - enable = true; - settings = rec { - initial_session = { - command = "Hyprland"; - user = "zack"; - }; - default_session = initial_session; - }; - }; - }; - - environment = { - variables = { - NIXOS_OZONE_WL = "1"; - __GL_GSYNC_ALLOWED = "0"; - __GL_VRR_ALLOWED = "0"; - _JAVA_AWT_WM_NONEREPARENTING = "1"; - SSH_AUTH_SOCK = "/run/user/1000/keyring/ssh"; - DISABLE_QT5_COMPAT = "0"; - GDK_BACKEND = "wayland,x11"; - ANKI_WAYLAND = "1"; - DIRENV_LOG_FORMAT = ""; - QT_AUTO_SCREEN_SCALE_FACTOR = "1"; - QT_QPA_PLATFORM = "wayland;xcb"; - DISABLE_QT_COMPAT = "0"; - QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; - MOZ_ENABLE_WAYLAND = "1"; - WLR_BACKEND = "wayland"; - WLR_RENDERER = "wayland"; - XDG_SESSION_TYPE = "wayland"; - SDL_VIDEODRIVER = "wayland"; - XDG_CACHE_HOME = "/home/zack/.cache"; - CLUTTER_BACKEND = "wayland"; - }; - loginShellInit = '' - dbus-update-activation-environment --systemd DISPLAY - eval $(gnome-keyring-daemon --start --components=ssh,secrets) - eval $(ssh-agent) - ''; - }; - - hardware.pulseaudio.support32Bit = true; - - xdg.portal = { - enable = true; - config.common.default = "*"; - wlr.enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal-gtk - pkgs.xdg-desktop-portal-wlr - inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland - pkgs.xwaylandvideobridge - ]; - }; - - sound = { - enable = true; - mediaKeys.enable = true; - }; -} diff --git a/env/x11/default.nix b/env/x11/default.nix deleted file mode 100644 index 7534e71..0000000 --- a/env/x11/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{pkgs, ...}: { - environment.etc."greetd/environments".text = '' - bspwm - Hyprland - ''; - - services = { - greetd = { - enable = true; - settings = rec { - initial_session = { - command = "bspwm"; - user = "zack"; - }; - default_session = initial_session; - }; - }; - }; -} diff --git a/flake.lock b/flake.lock index 762ae18..dde6a90 100644 --- a/flake.lock +++ b/flake.lock @@ -163,6 +163,22 @@ } }, "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1696426674, @@ -298,6 +314,25 @@ "type": "github" } }, + "flake-utils-plus": { + "inputs": { + "flake-utils": "flake-utils_6" + }, + "locked": { + "lastModified": 1715533576, + "narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", + "type": "github" + }, + "original": { + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f", + "type": "github" + } + }, "flake-utils_2": { "inputs": { "systems": "systems_7" @@ -374,6 +409,24 @@ "inputs": { "systems": "systems_13" }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "inputs": { + "systems": "systems_14" + }, "locked": { "lastModified": 1685518550, "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", @@ -460,11 +513,11 @@ ] }, "locked": { - "lastModified": 1715930644, - "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", + "lastModified": 1716457508, + "narHash": "sha256-ZxzffLuWRyuMrkVVq7wastNUqeO0HJL9xqfY1QsYaqo=", "owner": "nix-community", "repo": "home-manager", - "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", + "rev": "850cb322046ef1a268449cf1ceda5fd24d930b05", "type": "github" }, "original": { @@ -510,11 +563,11 @@ ] }, "locked": { - "lastModified": 1715791817, - "narHash": "sha256-J069Uhv/gCMFLX1dSh2f+9ZTM09r1Nv3oUfocCnWKow=", + "lastModified": 1716327911, + "narHash": "sha256-PI+wygItS/TKzi4gEAROvKTUzTx9GT+PGBttS/IOA/Q=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "7c3aa03dffb53921e583ade3d4ae3f487e390e7e", + "rev": "27ca640abeef2d425b5dbecf804f5eb622cef56d", "type": "github" }, "original": { @@ -555,11 +608,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1716365376, - "narHash": "sha256-941FKboG8Wc/hb1wvrEEKnC4DwDlSLgrjRL+whgWwUU=", + "lastModified": 1716480279, + "narHash": "sha256-iZmMWUnWMY+bn+kGKdsXL4y1zs9hViSRwMii01j7Wok=", "ref": "refs/heads/main", - "rev": "93fea890433ec11d7a915f5e0466b2e8b513e895", - "revCount": 4724, + "rev": "255272ea18a1bd899168b2d2063b6f153edda919", + "revCount": 4731, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -882,11 +935,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1716137900, - "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", "type": "github" }, "original": { @@ -930,11 +983,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1716395399, - "narHash": "sha256-X+99WjSwbxQ7X+CTyqZQZqeqGe8nbfAFz+tgK2r3O/g=", + "lastModified": 1716438273, + "narHash": "sha256-qgmg3oXm+PYWnO06g2aetPOAKvQkgC63NjNh0m9ZHNI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "bc5dc89513caa16788f6379962e50383cf3f70b0", + "rev": "3efa0a2a30e551229188707569e85495e73090f3", "type": "github" }, "original": { @@ -978,11 +1031,11 @@ }, "nixpkgs_stable": { "locked": { - "lastModified": 1716218643, - "narHash": "sha256-i/E7gzQybvcGAYDRGDl39WL6yVk30Je/NXypBz6/nmM=", + "lastModified": 1716361217, + "narHash": "sha256-mzZDr00WUiUXVm1ujBVv6A0qRd8okaITyUp4ezYRgc4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a8695cbd09a7ecf3376bd62c798b9864d20f86ee", + "rev": "46397778ef1f73414b03ed553a3368f0e7e33c2f", "type": "github" }, "original": { @@ -1071,11 +1124,11 @@ "systems": "systems_12" }, "locked": { - "lastModified": 1716284227, - "narHash": "sha256-Orl4jFK7ibvJeEecnINmYOOwCOL5s96YZkkAZ47Aix0=", + "lastModified": 1716476872, + "narHash": "sha256-tImPGwMbeiKOL3G0KlquxJUFK2lmAfEJRUkgmPaiDp0=", "owner": "raphamorim", "repo": "rio", - "rev": "dbf5bb85507ee57933b9dc2a5a95bb14f3d0d60b", + "rev": "d8c8cf8ce83b4e88f4928aed12b2aa17a7c3dc61", "type": "github" }, "original": { @@ -1103,8 +1156,9 @@ "nixpkgs_stable": "nixpkgs_stable", "resume": "resume", "rio-term": "rio-term", + "snowfall-lib": "snowfall-lib", "spicetify-nix": "spicetify-nix", - "systems": "systems_14", + "systems": "systems_15", "waybar": "waybar" } }, @@ -1171,9 +1225,31 @@ "type": "github" } }, + "snowfall-lib": { + "inputs": { + "flake-compat": "flake-compat_3", + "flake-utils-plus": "flake-utils-plus", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716456697, + "narHash": "sha256-05gmA4Kc0nISkRGpWRvVWk+rgukNosnHdEfwObPsRJM=", + "owner": "snowfallorg", + "repo": "lib", + "rev": "34c1697a5346b6e8d6cd123295ae07399f47634d", + "type": "github" + }, + "original": { + "owner": "snowfallorg", + "repo": "lib", + "type": "github" + } + }, "spicetify-nix": { "inputs": { - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_7", "nixpkgs": [ "nixpkgs" ] @@ -1283,6 +1359,21 @@ "type": "github" } }, + "systems_15": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "systems_2": { "locked": { "lastModified": 1681028828, @@ -1405,7 +1496,7 @@ }, "waybar": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "nixpkgs": [ "nixpkgs" ] diff --git a/flake.nix b/flake.nix index d09c51b..3ae5b66 100644 --- a/flake.nix +++ b/flake.nix @@ -67,6 +67,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + snowfall-lib = { + url = "github:snowfallorg/lib"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + neovim-nightly-overlay = { url = "github:nix-community/neovim-nightly-overlay"; # inputs.nixpkgs.follows = "nixpkgs"; @@ -84,60 +89,91 @@ }; }; - outputs = { - self, - nixpkgs, - nixpkgs_stable, - systems, - ... - } @ inputs: let - eachSystem = f: - nixpkgs.lib.genAttrs (import systems) ( - system: - f nixpkgs.legacyPackages.${system} - ); - in { - nixosConfigurations.pluto = nixpkgs_stable.lib.nixosSystem { - specialArgs = {inherit inputs;}; - modules = [ - ./hosts/pluto/configuration.nix - inputs.home-manager_stable.nixosModules.default - inputs.blog.nixosModule - inputs.agenix.nixosModules.default - ]; - }; + outputs = inputs: + inputs.snowfall-lib.mkFlake { + inherit inputs; + src = ./.; - nixosConfigurations.earth = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs;}; - modules = [ - ./hosts/earth/configuration.nix - inputs.lanzaboote.nixosModules.lanzaboote - inputs.home-manager.nixosModules.default - inputs.catppuccin.nixosModules.catppuccin - inputs.agenix.nixosModules.default - ]; - }; - - nixosConfigurations.live = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = {inherit inputs;}; - modules = [ - "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix" - "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" - # ./hosts/live/configuration.nix - ]; - }; - - devShells = eachSystem (pkgs: { - default = pkgs.mkShell { - buildInputs = [ - pkgs.nixd - pkgs.alejandra - pkgs.stylua - pkgs.lua-language-server - pkgs.luajitPackages.lua-lsp - ]; + snowfall = { + namespace = "custom"; }; - }); - }; + + channels-config = { + allowUnfree = true; + }; + + templates = import ./templates {}; + + homes.modules = with inputs; [ + spicetify-nix.homeManagerModule + catppuccin.homeManagerModules.catppuccin + anyrun.homeManagerModules.default + ags.homeManagerModules.default + ]; + + systems.modules.nixos = with inputs; [ + lanzaboote.nixosModules.lanzaboote + home-manager.nixosModules.home-manager + catppuccin.nixosModules.catppuccin + blog.nixosModule + agenix.nixosModules.default + ]; + }; + + # outputs = { + # self, + # nixpkgs, + # nixpkgs_stable, + # systems, + # ... + # } @ inputs: let + # eachSystem = f: + # nixpkgs.lib.genAttrs (import systems) ( + # system: + # f nixpkgs.legacyPackages.${system} + # ); + # in { + # nixosConfigurations.pluto = nixpkgs_stable.lib.nixosSystem { + # specialArgs = {inherit inputs;}; + # modules = [ + # ./hosts/pluto/configuration.nix + # inputs.home-manager_stable.nixosModules.default + # inputs.blog.nixosModule + # inputs.agenix.nixosModules.default + # ]; + # }; + # + # nixosConfigurations.earth = nixpkgs.lib.nixosSystem { + # specialArgs = {inherit inputs;}; + # modules = [ + # ./hosts/earth/configuration.nix + # inputs.lanzaboote.nixosModules.lanzaboote + # inputs.home-manager.nixosModules.default + # inputs.catppuccin.nixosModules.catppuccin + # inputs.agenix.nixosModules.default + # ]; + # }; + # + # nixosConfigurations.live = nixpkgs.lib.nixosSystem { + # system = "x86_64-linux"; + # specialArgs = {inherit inputs;}; + # modules = [ + # "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix" + # "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" + # # ./hosts/live/configuration.nix + # ]; + # }; + # + # devShells = eachSystem (pkgs: { + # default = pkgs.mkShell { + # buildInputs = [ + # pkgs.nixd + # pkgs.alejandra + # pkgs.stylua + # pkgs.lua-language-server + # pkgs.luajitPackages.lua-lsp + # ]; + # }; + # }); + # }; } diff --git a/homes/x86_64-linux/zack@earth/default.nix b/homes/x86_64-linux/zack@earth/default.nix new file mode 100644 index 0000000..b001863 --- /dev/null +++ b/homes/x86_64-linux/zack@earth/default.nix @@ -0,0 +1,129 @@ +{ + inputs, + pkgs, + system, + lib, + ... +}: { + wms.hyprland.enable = true; + apps = { + web.firefox.enable = true; + + tools.git.enable = true; + tools.tmux.enable = true; + tools.neovim.enable = true; + tools.starship.enable = true; + + term.kitty.enable = true; + + music.spotify.enable = true; + + helpers = { + anyrun.enable = true; + ags.enable = true; + }; + }; + + rice.gtk.enable = true; + + services.lock.enable = true; + + xdg.enable = true; + + # catppuccin.enable = true; + + home.packages = [ + pkgs.gimp + pkgs.slack + + pkgs.zoom-us + pkgs.elisa + + pkgs.prismlauncher + pkgs.obs-studio + + pkgs.jetbrains.idea-community + pkgs.jetbrains.datagrip + pkgs.ungoogled-chromium + + pkgs.thunderbird + + pkgs.mongodb-compass + pkgs.postman + pkgs.nh + pkgs.mosh + + pkgs.parsec-bin + pkgs.filezilla + pkgs.ghidra + pkgs.zed-editor + pkgs.openvpn + pkgs.telegram-desktop + ]; + + programs.zoxide = { + enable = true; + enableZshIntegration = true; + options = ["--cmd cd"]; + }; + + programs.cava = { + enable = true; + catppuccin.enable = true; + }; + + programs.btop = { + enable = true; + catppuccin.enable = true; + extraConfig = '' + update_ms = 100 + vim_keys = true + ''; + }; + + programs.lazygit = { + enable = true; + catppuccin.enable = true; + }; + + programs.fzf = { + enable = true; + catppuccin.enable = true; + }; + + systemd.user.services.xwaylandvideobridge = { + Unit = { + Description = "Tool to make it easy to stream wayland windows and screens to exisiting applications running under Xwayland"; + }; + Service = { + Type = "simple"; + ExecStart = lib.getExe pkgs.xwaylandvideobridge; + Restart = "on-failure"; + }; + Install = { + WantedBy = ["default.target"]; + }; + }; + + services = { + udiskie.enable = true; + gpg-agent = { + enable = true; + pinentryPackage = lib.mkForce pkgs.pinentry-gnome3; + enableSshSupport = true; + enableZshIntegration = true; + }; + }; + + systemd.user.services.kb-gui = { + Unit = { + Description = "KB Time/Date thing"; + }; + Install = { + WantedBy = ["default.target"]; + }; + Service = { + ExecStart = "${inputs.kb-gui.packages.${pkgs.system}.kb}/bin/kb"; + }; + }; +} diff --git a/hosts/common/default.nix b/hosts/common/default.nix deleted file mode 100644 index a1c31d3..0000000 --- a/hosts/common/default.nix +++ /dev/null @@ -1,157 +0,0 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). -{ - config, - pkgs, - inputs, - lib, - ... -}: { - imports = [ - # Include the results of the hardware scan. - ({ - options, - lib, - ... - }: - lib.mkIf (options ? virtualisation.memorySize) { - users.users.zack.password = "foo"; - }) - ../../env/wayland - ]; - - networking.nameservers = ["1.1.1.1" "1.0.0.1"]; - - boot.kernel.sysctl = { - "fs.inotify.max_user_watches" = 1048576; - "fs.inotify.max_queued_events" = 1048576; - }; - - virtualisation.vmVariant = { - # following configuration is added only when building VM with build-vm - virtualisation = { - memorySize = 2048; # Use 2048MiB memory. - cores = 4; - }; - }; - - # specialisation = { - # bspwm.configuration = { - # imports = [ - # ../../env/x11 - # ]; - # environment.etc."specialisation".text = "bspwm"; - # }; - # hyprland.configuration = { - # imports = [ - # ../../env/wayland - # ]; - # environment.etc."specialisation".text = "hyprland"; - # }; - # }; - - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; - }; - - nix.settings = { - trusted-users = ["root" "zack"]; - substituters = ["https://hyprland.cachix.org" "https://zackartz.cachix.org" "https://cache.nixos.org"]; - trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "zackartz.cachix.org-1:nrEfVZF8MVX0Lnt73KwYzH2kwDzFuAoR5VPjuUd4R30="]; - }; - - services.udev.extraRules = ''KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="plugdev"''; - # Enable networking - - services.gnome.gnome-keyring.enable = true; - - security.polkit.enable = true; - security.pam.services.swaylock = {}; - - # Set your time zone. - time.timeZone = "America/New_York"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "en_US.UTF-8"; - LC_IDENTIFICATION = "en_US.UTF-8"; - LC_MEASUREMENT = "en_US.UTF-8"; - LC_MONETARY = "en_US.UTF-8"; - LC_NAME = "en_US.UTF-8"; - LC_NUMERIC = "en_US.UTF-8"; - LC_PAPER = "en_US.UTF-8"; - LC_TELEPHONE = "en_US.UTF-8"; - LC_TIME = "en_US.UTF-8"; - }; - - # Enable the X11 windowing system. - services.xserver.enable = true; - - # Configure keymap in X11 - services.xserver.xkb = { - layout = "us"; - variant = ""; - }; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable OpenGL - hardware.opengl = { - enable = true; - driSupport = true; - driSupport32Bit = true; - }; - - environment.variables = { - WLR_RENDERER_ALLOW_SOFTWARE = "1"; - }; - - environment.sessionVariables = { - FLAKE = "/home/zack/nixos/"; - }; - - environment.sessionVariables.DEFAULT_BROWSER = "${pkgs.firefox}/bin/firefox"; - - nix.settings.experimental-features = ["nix-command" "flakes"]; - - # Enable touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - - users.groups.plugdev = {}; - - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - # services.openssh.enable = true; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "23.11"; # Did you read the comment? -} diff --git a/hosts/earth/configuration.nix b/hosts/earth/configuration.nix deleted file mode 100644 index 9e1f184..0000000 --- a/hosts/earth/configuration.nix +++ /dev/null @@ -1,211 +0,0 @@ -{ - config, - pkgs, - inputs, - lib, - ... -}: { - imports = [ - ../common/default.nix - - # Include the results of the hardware scan. - ./hardware-configuration.nix - ./nvidia.nix - ({ - options, - lib, - ... - }: - lib.mkIf (options ? virtualisation.memorySize) { - users.users.zack.password = "foo"; - }) - ]; - - programs.steam.enable = true; - programs.steam.gamescopeSession.enable = true; - programs.gamemode.enable = true; - - # Enable sound with pipewire. - sound.enable = true; - hardware.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - # If you want to use JACK applications, uncomment this - jack.enable = true; - - # use the example session manager (no others are packaged yet so this is enabled by default, - # no need to redefine it in your config for now) - wireplumber.enable = true; - }; - services.fstrim.enable = true; - services.mullvad-vpn.enable = true; - services.openvpn.servers = { - work = { - config = ''config /home/zack/Downloads/zachary_myers.ovpn''; - updateResolvConf = true; - }; - }; - - # disable autoconnect for now - # systemd.services."mullvad-daemon".postStart = let - # mullvad = config.services.mullvad-vpn.package; - # in '' - # while ! ${mullvad}/bin/mullvad status >/dev/null; do sleep 1; done - # ${mullvad}/bin/mullvad auto-connect set on - # ${mullvad}/bin/mullvad tunnel set ipv6 on - # ${mullvad}/bin/mullvad connect - # ''; - - services.transmission = { - enable = true; - package = pkgs.transmission_4; - settings = { - download-dir = "/home/zack/dl"; - }; - }; - - # Bootloader. - boot.loader.systemd-boot.enable = lib.mkForce false; - boot.lanzaboote = { - enable = true; - pkiBundle = "/etc/secureboot"; - }; - boot.loader.efi.canTouchEfiVariables = true; - - networking.hostName = "earth"; # Define your hostname. - - networking.networkmanager = { - enable = true; - unmanaged = ["enp6s0"]; - # insertNameservers = ["1.1.1.1" "1.0.0.1"]; - }; - # networking.firewall.enable = false; - - boot.kernelPackages = pkgs.linuxPackages_zen; - boot.supportedFilesystems = ["ntfs"]; - - services.minidlna = { - enable = true; - openFirewall = true; - settings = { - notify_interval = 60; - friendly_name = "ZACKPC"; - media_dir = ["A,/home/zack/Music"]; - inotify = "yes"; - }; - }; - - users.users.minidlna = { - extraGroups = ["users"]; - }; - - # services.openssh = { - # enable = true; - # PasswordAuthentication = true; - # }; - - environment.systemPackages = with pkgs; [ - alvr - BeatSaberModManager - sbctl - vesktop - mangohud - transmission_4 - inputs.agenix.packages.${pkgs.system}.agenix - ]; - - hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.mkDriver { - version = "555.42.02"; - sha256_64bit = "sha256-k7cI3ZDlKp4mT46jMkLaIrc2YUx1lh1wj/J4SVSHWyk="; - sha256_aarch64 = lib.fakeSha256; - openSha256 = "sha256-rtDxQjClJ+gyrCLvdZlT56YyHQ4sbaL+d5tL4L4VfkA="; - settingsSha256 = "sha256-rtDxQjClJ+gyrCLvdZlT56YyHQ4sbaL+d5tL4L4VfkA="; - persistencedSha256 = lib.fakeSha256; - }; - - hardware.nvidia = { - # Modesetting is required. - modesetting.enable = true; - - # Nvidia power management. Experimental, and can cause sleep/suspend to fail. - # Enable this if you have graphical corruption issues or application crashes after waking - # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead - # of just the bare essentials. - powerManagement.enable = false; - - # Fine-grained power management. Turns off GPU when not in use. - # Experimental and only works on modern Nvidia GPUs (Turing or newer). - powerManagement.finegrained = false; - - # Use the NVidia open source kernel module (not to be confused with the - # independent third-party "nouveau" open source driver). - # Support is limited to the Turing and later architectures. Full list of - # supported GPUs is at: - # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus - # Only available from driver 515.43.04+ - # Currently alpha-quality/buggy, so false is currently the recommended setting. - open = false; - - # Enable the Nvidia settings menu, - # accessible via `nvidia-settings`. - nvidiaSettings = true; - - # Optionally, you may need to select the appropriate driver version for your specific GPU. - # package = config.boot.kernelPackages.nvidiaPackages.beta; - }; - - # specialisation = { - # nvidiaProduction.configuration = { - # hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.production; - # environment.etc."specialisation".text = "nvidiaProduction"; - # }; - # nvidiaStable.configuration = { - # hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable; - # environment.etc."specialisation".text = "nvidiaStable"; - # }; - # nvidiaVulkanBeta.configuration = { - # hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.vulkan_beta; - # environment.etc."specialisation".text = "nvidiaVulkanBeta"; - # }; - # }; - - programs.zsh.enable = true; - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.zack = { - isNormalUser = true; - description = "zack"; - extraGroups = ["networkmanager" "wheel" "docker" "libvirtd" "plugdev"]; - shell = pkgs.zsh; - packages = with pkgs; [ - firefox - kate - rio - telegram-desktop - kitty - ]; - }; - - catppuccin.enable = true; - - home-manager = { - extraSpecialArgs = {inherit inputs;}; - users = { - "zack" = { - imports = [../../modules/home-manager/zack.nix]; - _module.args.theme = import ../../core/theme.nix; - - home.username = "zack"; - home.homeDirectory = "/home/zack"; - }; - }; - }; - - programs.virt-manager.enable = true; - - virtualisation.docker.enable = true; - virtualisation.libvirtd.enable = true; -} diff --git a/hosts/earth/nvidia.nix b/hosts/earth/nvidia.nix deleted file mode 100644 index b2c28c9..0000000 --- a/hosts/earth/nvidia.nix +++ /dev/null @@ -1,23 +0,0 @@ -{pkgs, ...}: { - services.xserver.videoDrivers = ["nvidia"]; - - environment.variables = { - GBM_BACKEND = "nvidia-drm"; - WLR_NO_HARDWARE_CURSORS = "1"; - LIBVA_DRIVER_NAME = "nvidia"; - __GLX_VENDOR_LIBRARY_NAME = "nvidia"; - __NV_PRIME_RENDER_OFFLOAD = "1"; - __VK_LAYER_NV_optimus = "NVIDIA_only"; - NVD_BACKEND = "direct"; - # __GL_GSYNC_ALLOWED = "1"; - # __GL_VRR_ALLOWED = "1"; - XWAYLAND_NO_GLAMOR = "1"; - __GL_MaxFramesAllowed = "1"; - }; - - environment.systemPackages = with pkgs; [ - vulkan-loader - vulkan-validation-layers - vulkan-tools - ]; -} diff --git a/hosts/live/configuration.nix b/hosts/live/configuration.nix deleted file mode 100644 index ee746a9..0000000 --- a/hosts/live/configuration.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ - config, - pkgs, - lib, - inputs, - ... -}: { - imports = [ - ../common/default.nix - ]; - - nixpkgs = { - hostPlatform = lib.mkDefault "x86_64-linux"; - }; - - services = { - # qemuGuest.enable = true; - openssh.settings.PermitRootLogin = lib.mkForce "yes"; - }; - - boot = { - supportedFilesystems = lib.mkForce ["btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs"]; - kernelPackages = pkgs.linuxPackages; - extraModulePackages = with config.boot.kernelPackages; [rtl8812au]; - }; - - networking = { - hostName = "live"; - }; - - # gnome power settings do not turn off screen - systemd = { - services.sshd.wantedBy = pkgs.lib.mkForce ["multi-user.target"]; - targets = { - sleep.enable = false; - suspend.enable = false; - hibernate.enable = false; - hybrid-sleep.enable = false; - }; - }; - - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.nixos = { - isNormalUser = true; - description = "nixos"; - extraGroups = ["networkmanager" "wheel" "docker" "libvirtd" "plugdev"]; - shell = pkgs.zsh; - packages = with pkgs; [ - firefox - kate - rio - telegram-desktop - kitty - mailspring - # thunderbird - ]; - }; - - # home-manager.extraSpecialArgs = {inherit inputs;}; - # home-manager.users.nixos = { - # imports = [../../modules/home-manager/default.nix]; - # _module.args.theme = import ../../core/theme.nix; - # - # home.stateVersion = "23.11"; # Please read the comment before changing it. - # - # home.username = "nixos"; - # home.homeDirectory = "/home/nixos"; - # }; - users.extraUsers.root.password = "nixos"; -} diff --git a/lib/module/default.nix b/lib/module/default.nix new file mode 100644 index 0000000..942ad9c --- /dev/null +++ b/lib/module/default.nix @@ -0,0 +1,17 @@ +{lib, ...}: +with lib; rec { + mkOpt = type: default: description: + mkOption {inherit type default description;}; + + mkOpt' = type: default: mkOpt type default null; + + mkBoolOpt = mkOpt types.bool; + + mkStringOpt = mkOpt types.string; + + mkBoolOpt' = mkOpt' types.bool; + + enabled = {enable = true;}; + + disabled = {enable = false;}; +} diff --git a/core/theme.nix b/lib/theme/default.nix similarity index 100% rename from core/theme.nix rename to lib/theme/default.nix diff --git a/core/wall.png b/lib/theme/wall.png similarity index 100% rename from core/wall.png rename to lib/theme/wall.png diff --git a/core/wallpaper.png b/lib/theme/wallpaper.png similarity index 100% rename from core/wallpaper.png rename to lib/theme/wallpaper.png diff --git a/modules/home-manager/applications.nix b/modules/home-manager/applications.nix deleted file mode 100644 index 1516246..0000000 --- a/modules/home-manager/applications.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - pkgs, - inputs, - ... -}: { - home.packages = [ - pkgs.gimp - pkgs.slack - - pkgs.zoom-us - pkgs.elisa - - pkgs.prismlauncher - pkgs.obs-studio - inputs.kb-gui.packages.${pkgs.system}.kb - - pkgs.jetbrains.idea-community - pkgs.jetbrains.datagrip - pkgs.ungoogled-chromium - - pkgs.thunderbird - - pkgs.mongodb-compass - pkgs.postman - pkgs.mosh - - pkgs.parsec-bin - pkgs.filezilla - pkgs.ghidra - pkgs.zed-editor - pkgs.openvpn - ]; -} diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix deleted file mode 100644 index 5224431..0000000 --- a/modules/home-manager/default.nix +++ /dev/null @@ -1,178 +0,0 @@ -{ - pkgs, - inputs, - lib, - ... -}: let - spicePkgs = inputs.spicetify-nix.packages.${pkgs.system}.default; -in { - imports = [ - ./swayidle.nix - ./vim/default.nix - ./firefox.nix - - ../rice/ags - ../rice/hyprland - # ../rice/sway - ../rice/gtk.nix - ../rice/kitty.nix - # ../rice/waybar - # ../rice/dunst.nix - ../rice/anyrun - ../rice/rio.nix - ../rice/wofi.nix - ../shell - - inputs.spicetify-nix.homeManagerModule - inputs.catppuccin.homeManagerModules.catppuccin - ]; - - nixpkgs = { - config = { - allowUnfree = true; - allowUnfreePredicate = _: true; - }; - overlays = [ - inputs.neovim-nightly-overlay.overlay - ]; - }; - - gtk.catppuccin.cursor.enable = false; - - nix.gc = { - automatic = true; - frequency = "weekly"; - options = "--delete-older-than 30d"; - }; - - catppuccin.flavor = "mocha"; - programs.spicetify = { - enable = true; - theme = spicePkgs.themes.catppuccin; - colorScheme = "mocha"; - - enabledExtensions = with spicePkgs.extensions; [ - fullAppDisplay - shuffle # shuffle+ (special characters are sanitized out of ext names) - hidePodcasts - ]; - }; - - xdg.mimeApps.defaultApplications = { - "text/html" = "firefox.desktop"; - "x-scheme-handler/http" = "firefox.desktop"; - "x-scheme-handler/https" = "firefox.desktop"; - "image/png" = "feh.desktop"; - }; - - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. - home.stateVersion = "23.11"; # Please read the comment before changing it. - - home.packages = [ - pkgs.wofi - pkgs.dconf - pkgs.wl-clipboard - pkgs.swaybg - pkgs.pavucontrol - pkgs.wlogout - pkgs.sway-audio-idle-inhibit - pkgs.grim - pkgs.slurp - - pkgs.xfce.thunar - pkgs.feh - pkgs.nitch - pkgs.nix-output-monitor - pkgs.fastfetch - - pkgs.nh - pkgs.dwl - - pkgs.killall - (pkgs.writeShellScriptBin "rebuild" '' - #!${pkgs.bash}/bin/bash - set -e - pushd ~/nixos/ - alejandra . &>/dev/null - git add . - echo "[REBUILD]: rebuilding nixos" - nh os switch - gen=$(nixos-rebuild list-generations | grep current) - git commit -am "$gen" - git push origin main - popd - '') - (pkgs.writeShellScriptBin "powermenu" '' - chosen=$(printf " Power Off\n Restart\n Suspend\n Lock\n󰍃 Log Out" | anyrun --plugins libstdin.so --show-results-immediately true) - - case "$chosen" in - " Power Off") systemctl poweroff;; - " Restart") systemctl reboot;; - " Lock") swaylock;; - "󰍃 Log Out") hyprctl dispatch exit;; - *) exit 1 ;; - esac - '') - ]; - - home.sessionVariables = { - EDITOR = "nvim"; - }; - - xdg.enable = true; - - programs.zoxide = { - enable = true; - enableZshIntegration = true; - options = ["--cmd cd"]; - }; - - programs.cava = { - enable = true; - catppuccin.enable = true; - }; - - programs.btop = { - enable = true; - catppuccin.enable = true; - extraConfig = '' - update_ms = 100 - vim_keys = true - ''; - }; - - programs.lazygit = { - enable = true; - catppuccin.enable = true; - }; - - programs.fzf = { - enable = true; - catppuccin.enable = true; - }; - - systemd.user.services.xwaylandvideobridge = { - Unit = { - Description = "Tool to make it easy to stream wayland windows and screens to exisiting applications running under Xwayland"; - }; - Service = { - Type = "simple"; - ExecStart = lib.getExe pkgs.xwaylandvideobridge; - Restart = "on-failure"; - }; - Install = { - WantedBy = ["default.target"]; - }; - }; - - # programs.nixvim = ./vim.nix; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; -} diff --git a/modules/home-manager/firefox.nix b/modules/home-manager/firefox.nix deleted file mode 100644 index 0b3e86a..0000000 --- a/modules/home-manager/firefox.nix +++ /dev/null @@ -1,234 +0,0 @@ -{pkgs, ...}: let - lock-false = { - Value = false; - Status = "locked"; - }; - lock-true = { - Value = true; - Status = "locked"; - }; -in { - programs.firefox = { - enable = true; - package = pkgs.wrapFirefox pkgs.firefox-unwrapped { - extraPolicies = { - DisableTelemetry = true; - - Preferences = { - "app.normandy.api_url" = { - Value = ""; - Status = "locked"; - }; - "app.normandy.enabled" = lock-false; - "app.shield.optoutstudies.enabled" = lock-false; - "app.update.auto" = lock-false; - "beacon.enabled" = lock-false; - "breakpad.reportURL" = { - Value = ""; - Status = "locked"; - }; - "browser.aboutConfig.showWarning" = lock-false; - "browser.cache.offline.enable" = lock-false; - "browser.crashReports.unsubmittedCheck.autoSubmit" = lock-false; - "browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false; - "browser.crashReports.unsubmittedCheck.enabled" = lock-false; - "browser.disableResetPrompt" = lock-true; - "browser.newtab.preload" = lock-false; - "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false; - "browser.newtabpage.enhanced" = lock-false; - "browser.newtabpage.introShown" = lock-true; - "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false; - "browser.newtabpage.activity-stream.showSponsored" = lock-false; - "browser.newtabpage.activity-stream.system.showSponsored" = lock-false; - "browser.safebrowsing.appRepURL" = { - Value = ""; - Status = "locked"; - }; - "browser.safebrowsing.blockedURIs.enabled" = lock-false; - "browser.safebrowsing.downloads.enabled" = lock-false; - "browser.safebrowsing.downloads.remote.enabled" = lock-false; - "browser.safebrowsing.downloads.remote.url" = { - Value = ""; - Status = "locked"; - }; - "browser.safebrowsing.enabled" = lock-false; - "browser.safebrowsing.malware.enabled" = lock-false; - "browser.safebrowsing.phishing.enabled" = lock-false; - "browser.selfsupport.url" = { - Value = ""; - Status = "locked"; - }; - "browser.send_pings" = lock-false; - "browser.sessionstore.privacy_level" = { - Value = 0; - Status = "locked"; - }; - "browser.shell.checkDefaultBrowser" = lock-false; - "browser.startup.homepage_override.mstone" = { - Value = "ignore"; - Status = "locked"; - }; - "browser.tabs.crashReporting.sendReport" = lock-false; - "browser.urlbar.groupLabels.enabled" = lock-false; - "browser.urlbar.quicksuggest.enabled" = lock-false; - "browser.urlbar.speculativeConnect.enabled" = lock-false; - "browser.urlbar.trimURLs" = lock-false; - "browser.urlbar.suggest.quicksuggest.sponsored" = lock-false; - "datareporting.healthreport.service.enabled" = lock-false; - "datareporting.healthreport.uploadEnabled" = lock-false; - "datareporting.policy.dataSubmissionEnabled" = lock-false; - "device.sensors.ambientLight.enabled" = lock-false; - "device.sensors.enabled" = lock-false; - "device.sensors.motion.enabled" = lock-false; - "device.sensors.orientation.enabled" = lock-false; - "device.sensors.proximity.enabled" = lock-false; - "dom.battery.enabled" = lock-false; - "dom.event.clipboardevents.enabled" = lock-false; - "dom.webaudio.enabled" = lock-false; - "experiments.activeExperiment" = lock-false; - "experiments.enabled" = lock-false; - "experiments.manifest.uri" = { - Value = ""; - Status = "locked"; - }; - "experiments.supported" = lock-false; - "extensions.ClearURLs@kevinr.whiteList" = { - Value = ""; - Status = "locked"; - }; - "extensions.Decentraleyes@ThomasRientjes.whiteList" = { - Value = ""; - Status = "locked"; - }; - "extensions.FirefoxMulti-AccountContainers@mozilla.whiteList" = { - Value = ""; - Status = "locked"; - }; - "extensions.TemporaryContainers@stoically.whiteList" = { - Value = ""; - Status = "locked"; - }; - "extensions.autoDisableScopes" = 14; - "extensions.getAddons.cache.enabled" = lock-false; - "extensions.getAddons.showPane" = lock-false; - "extensions.greasemonkey.stats.optedin" = lock-false; - "extensions.greasemonkey.stats.url" = { - Value = ""; - Status = "locked"; - }; - "extensions.pocket.enabled" = lock-false; - "extensions.shield-recipe-client.api_url" = { - Value = ""; - Status = "locked"; - }; - "extensions.shield-recipe-client.enabled" = lock-false; - "extensions.webservice.discoverURL" = { - Value = ""; - Status = "locked"; - }; - "media.autoplay.default" = { - Value = 0; - Status = "locked"; - }; - "media.autoplay.enabled" = lock-true; - "media.eme.enabled" = lock-false; - "media.gmp-widevinecdm.enabled" = lock-false; - "media.navigator.enabled" = lock-false; - "media.peerconnection.enabled" = lock-false; - "media.video_stats.enabled" = lock-false; - "network.IDN_show_punycode" = lock-true; - "network.allow-experiments" = lock-false; - "network.captive-portal-service.enabled" = lock-false; - "network.cookie.cookieBehavior" = { - Value = 1; - Status = "locked"; - }; - "network.dns.disablePrefetch" = lock-true; - "network.dns.disablePrefetchFromHTTPS" = lock-true; - "network.http.referer.spoofSource" = lock-true; - "network.http.speculative-parallel-limit" = { - Value = 0; - Status = "locked"; - }; - "network.predictor.enable-prefetch" = lock-false; - "network.predictor.enabled" = lock-false; - "network.prefetch-next" = lock-false; - "network.trr.mode" = { - Value = 5; - Status = "locked"; - }; - "privacy.donottrackheader.enabled" = lock-true; - "privacy.donottrackheader.value" = { - Value = 1; - Status = "locked"; - }; - "privacy.firstparty.isolate" = lock-true; - "privacy.query_stripping" = lock-true; - "privacy.trackingprotection.cryptomining.enabled" = lock-true; - "privacy.trackingprotection.enabled" = lock-true; - "privacy.trackingprotection.fingerprinting.enabled" = lock-true; - "privacy.trackingprotection.pbmode.enabled" = lock-true; - "privacy.usercontext.about_newtab_segregation.enabled" = lock-true; - "security.ssl.disable_session_identifiers" = lock-true; - "services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" = lock-false; - "signon.autofillForms" = lock-false; - "toolkit.telemetry.archive.enabled" = lock-false; - "toolkit.telemetry.bhrPing.enabled" = lock-false; - "toolkit.telemetry.cachedClientID" = { - Value = ""; - Status = "locked"; - }; - "toolkit.telemetry.enabled" = lock-false; - "toolkit.telemetry.firstShutdownPing.enabled" = lock-false; - "toolkit.telemetry.hybridContent.enabled" = lock-false; - "toolkit.telemetry.newProfilePing.enabled" = lock-false; - "toolkit.telemetry.prompted" = { - Value = 2; - Status = "locked"; - }; - "toolkit.telemetry.rejected" = lock-true; - "toolkit.telemetry.reportingpolicy.firstRun" = lock-false; - "toolkit.telemetry.server" = { - Value = ""; - Status = "locked"; - }; - "toolkit.telemetry.shutdownPingSender.enabled" = lock-false; - "toolkit.telemetry.unified" = lock-false; - "toolkit.telemetry.unifiedIsOptIn" = lock-false; - "toolkit.telemetry.updatePing.enabled" = lock-false; - "webgl.renderer-string-override" = { - Value = " "; - Status = "locked"; - }; - "webgl.vendor-string-override" = { - Value = " "; - Status = "locked"; - }; - }; - - ExtensionSettings = with builtins; let - extension = shortId: uuid: { - name = uuid; - value = { - install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; - installation_mode = "normal_installed"; - }; - }; - in - listToAttrs [ - (extension "ublock-origin" "uBlock0@raymondhill.net") - (extension "privacy-badger17" "jid1-MnnxcxisBPnSXQ@jetpack") - (extension "1password-x-password-manager" "{d634138d-c276-4fc8-924b-40a0ea21d284}") - (extension "firefox-color" "FirefoxColor@mozilla.com") - (extension "multi-account-containers" "@testpilot-containers") - (extension "temporary-containers" "{c607c8df-14a7-4f28-894f-29e8722976af}") - (extension "styl-us" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}") - (extension "betterttv" "firefox@betterttv.net") - (extension "decentraleyes" "jid1-BoFifL9Vbdl2zQ@jetpack") - (extension "canvasblocker" "CanvasBlocker@kkapsner.de") - (extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") - ]; - }; - }; - }; -} diff --git a/modules/home-manager/swayidle.nix b/modules/home-manager/swayidle.nix deleted file mode 100644 index 5152fb2..0000000 --- a/modules/home-manager/swayidle.nix +++ /dev/null @@ -1,86 +0,0 @@ -{ - pkgs, - lib, - config, - theme, - inputs, - ... -}: let - suspendScript = pkgs.writeShellScript "suspend-script" '' - ${pkgs.pipewire}/bin/pw-cli i all | ${pkgs.ripgrep}/bin/rg running - # only suspend if audio isn't running - if [ $? == 1 ]; then - ${pkgs.systemd}/bin/systemctl suspend - fi - ''; -in { - programs.swaylock = { - enable = true; - package = pkgs.swaylock-effects; - settings = with theme.colors; { - clock = true; - color = base; - font = "Work Sans"; - image = "${theme.wallpaper}"; - show-failed-attempts = false; - indicator = true; - indicator-radius = 200; - indicator-thickness = 20; - line-color = "00000000"; - ring-color = "00000000"; - inside-color = "00000000"; - key-hl-color = "f2cdcd"; - separator-color = "00000000"; - text-color = text; - text-caps-lock-color = ""; - line-ver-color = love; - ring-ver-color = rose; - inside-ver-color = base; - text-ver-color = text; - ring-wrong-color = foam; - text-wrong-color = foam; - inside-wrong-color = base; - inside-clear-color = base; - text-clear-color = text; - ring-clear-color = iris; - line-clear-color = base; - line-wrong-color = base; - bs-hl-color = foam; - line-uses-ring = false; - grace = 2; - grace-no-mouse = true; - grace-no-touch = true; - datestr = "%d.%m"; - fade-in = "0.1"; - ignore-empty-password = true; - }; - }; - - systemd.user.services.hypridle = { - Unit = { - Description = "Idle Daemon for Hyprland"; - }; - Service = { - Type = "simple"; - ExecStart = lib.getExe inputs.hypridle.packages.${pkgs.system}.hypridle; - Restart = "on-failure"; - }; - Install = { - WantedBy = ["hyprland-session.target"]; - }; - }; - - xdg.configFile."hypr/hypridle.conf".text = '' - general { - lock_cmd = ${pkgs.swaylock-effects}/bin/swaylock -fF - before_sleep_cmd = ${pkgs.swaylock-effects}/bin/swaylock -fF # command ran before sleep - ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam) - } - - listener { - timeout = 300 # in seconds - on-timeout = ${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off - on-resume = ${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on - } - ''; -} diff --git a/modules/home-manager/vim/config/lua/plugins/editor/presence.lua b/modules/home-manager/vim/config/lua/plugins/editor/presence.lua deleted file mode 100644 index 2764b33..0000000 --- a/modules/home-manager/vim/config/lua/plugins/editor/presence.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - "IogaMaster/neocord", - event = "VeryLazy", - opts = { - -- log_level = "debug", - }, -} diff --git a/modules/home-manager/vim/default.nix b/modules/home-manager/vim/default.nix deleted file mode 100644 index 926dda6..0000000 --- a/modules/home-manager/vim/default.nix +++ /dev/null @@ -1,88 +0,0 @@ -{ - config, - pkgs, - lib, - inputs, - ... -}: let - nvimDir = "/home/${config.home.username}/nixos/modules/home-manager/vim"; -in { - programs.neovim = { - enable = true; - defaultEditor = true; - extraPackages = with pkgs; [ - # Formatters - alejandra # Nix - black # Python - prettierd # Multi-language - shfmt - isort - stylua - - # LSP - lua-language-server - nixd - rust-analyzer - nodePackages.bash-language-server - vscode-langservers-extracted - nodePackages.vscode-json-languageserver - nodePackages.typescript-language-server - tailwindcss-language-server - - # Tools - git - html-tidy - cmake - fzf - charm-freeze - gcc - gnumake - nodejs - fswatch # File watcher utility, replacing libuv.fs_event for neovim 10.0 - sqlite - postgresql - mongosh - gerbera - vscode-extensions.vadimcn.vscode-lldb.adapter - ]; - plugins = [ - pkgs.vimPlugins.lazy-nvim # All other plugins are managed by lazy-nvim - ]; - extraLuaPackages = with pkgs; [ - lua51Packages.lua-curl - lua51Packages.nvim-nio - lua51Packages.xml2lua - lua51Packages.mimetypes - ]; - }; - - xdg.configFile = { - # Raw symlink to the plugin manager lock file, so that it stays writeable - "nvim/lazy-lock.json".source = config.lib.file.mkOutOfStoreSymlink "${nvimDir}/lazy-lock.json"; - "nvim" = { - source = ./config; - recursive = true; - }; - }; - - home.activation.neovim = lib.hm.dag.entryAfter ["linkGeneration"] '' - #! /bin/bash - NVIM_WRAPPER=~/.nix-profile/bin/nvim - STATE_DIR=~/.local/state/nix/ - STATE_FILE=$STATE_DIR/lazy-lock-checksum - LOCK_FILE=~/.config/nvim/lazy-lock.json - HASH=$(nix-hash --flat $LOCK_FILE) - CURL_DIR=${pkgs.curl} - - [ ! -d $STATE_DIR ] && mkdir -p $STATE_DIR - [ ! -f $STATE_FILE ] && touch $STATE_FILE - - if [ "$(cat $STATE_FILE)" != "$HASH" ]; then - echo "Syncing neovim plugins" - PATH="$PATH:${pkgs.git}/bin" $DRY_RUN_CMD $NVIM_WRAPPER --headless "+Lazy! restore" +qa - $DRY_RUN_CMD echo $HASH >$STATE_FILE - else - $VERBOSE_ECHO "Neovim plugins already synced, skipping" - fi - ''; -} diff --git a/modules/home-manager/zack.nix b/modules/home-manager/zack.nix deleted file mode 100644 index c5a1ef8..0000000 --- a/modules/home-manager/zack.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - inputs, - pkgs, - lib, - ... -}: { - imports = [./default.nix ./applications.nix]; - - services = { - udiskie.enable = true; - gpg-agent = { - enable = true; - pinentryPackage = lib.mkForce pkgs.pinentry-gnome3; - enableSshSupport = true; - enableZshIntegration = true; - }; - }; - - systemd.user.services.kb-gui = { - Unit = { - Description = "KB Time/Date thing"; - }; - Install = { - WantedBy = ["default.target"]; - }; - Service = { - ExecStart = "${inputs.kb-gui.packages.${pkgs.system}.kb}/bin/kb"; - }; - }; -} diff --git a/modules/rice/ags/cfg/config.js b/modules/home/apps/helpers/ags/cfg/config.js similarity index 100% rename from modules/rice/ags/cfg/config.js rename to modules/home/apps/helpers/ags/cfg/config.js diff --git a/modules/rice/ags/cfg/imports.js b/modules/home/apps/helpers/ags/cfg/imports.js similarity index 100% rename from modules/rice/ags/cfg/imports.js rename to modules/home/apps/helpers/ags/cfg/imports.js diff --git a/modules/rice/ags/cfg/modules/bar/bar.js b/modules/home/apps/helpers/ags/cfg/modules/bar/bar.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/bar.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/bar.js diff --git a/modules/rice/ags/cfg/modules/bar/clock.js b/modules/home/apps/helpers/ags/cfg/modules/bar/clock.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/clock.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/clock.js diff --git a/modules/rice/ags/cfg/modules/bar/media.js b/modules/home/apps/helpers/ags/cfg/modules/bar/media.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/media.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/media.js diff --git a/modules/rice/ags/cfg/modules/bar/notification.js b/modules/home/apps/helpers/ags/cfg/modules/bar/notification.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/notification.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/notification.js diff --git a/modules/rice/ags/cfg/modules/bar/sysinfo/battery.js b/modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/battery.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/sysinfo/battery.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/battery.js diff --git a/modules/rice/ags/cfg/modules/bar/sysinfo/bluetooth.js b/modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/bluetooth.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/sysinfo/bluetooth.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/bluetooth.js diff --git a/modules/rice/ags/cfg/modules/bar/sysinfo/network.js b/modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/network.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/sysinfo/network.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/network.js diff --git a/modules/rice/ags/cfg/modules/bar/sysinfo/sysinfo.js b/modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/sysinfo.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/sysinfo/sysinfo.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/sysinfo.js diff --git a/modules/rice/ags/cfg/modules/bar/sysinfo/volume.js b/modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/volume.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/sysinfo/volume.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/sysinfo/volume.js diff --git a/modules/rice/ags/cfg/modules/bar/title.js b/modules/home/apps/helpers/ags/cfg/modules/bar/title.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/title.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/title.js diff --git a/modules/rice/ags/cfg/modules/bar/tray.js b/modules/home/apps/helpers/ags/cfg/modules/bar/tray.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/tray.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/tray.js diff --git a/modules/rice/ags/cfg/modules/bar/workspaces.js b/modules/home/apps/helpers/ags/cfg/modules/bar/workspaces.js similarity index 100% rename from modules/rice/ags/cfg/modules/bar/workspaces.js rename to modules/home/apps/helpers/ags/cfg/modules/bar/workspaces.js diff --git a/modules/rice/ags/cfg/modules/dashboard/bluetooth.js b/modules/home/apps/helpers/ags/cfg/modules/dashboard/bluetooth.js similarity index 100% rename from modules/rice/ags/cfg/modules/dashboard/bluetooth.js rename to modules/home/apps/helpers/ags/cfg/modules/dashboard/bluetooth.js diff --git a/modules/rice/ags/cfg/modules/dashboard/brightnessSlider.js b/modules/home/apps/helpers/ags/cfg/modules/dashboard/brightnessSlider.js similarity index 100% rename from modules/rice/ags/cfg/modules/dashboard/brightnessSlider.js rename to modules/home/apps/helpers/ags/cfg/modules/dashboard/brightnessSlider.js diff --git a/modules/rice/ags/cfg/modules/dashboard/calendar.js b/modules/home/apps/helpers/ags/cfg/modules/dashboard/calendar.js similarity index 100% rename from modules/rice/ags/cfg/modules/dashboard/calendar.js rename to modules/home/apps/helpers/ags/cfg/modules/dashboard/calendar.js diff --git a/modules/rice/ags/cfg/modules/dashboard/dashboard.js b/modules/home/apps/helpers/ags/cfg/modules/dashboard/dashboard.js similarity index 100% rename from modules/rice/ags/cfg/modules/dashboard/dashboard.js rename to modules/home/apps/helpers/ags/cfg/modules/dashboard/dashboard.js diff --git a/modules/rice/ags/cfg/modules/dashboard/iconButtons.js b/modules/home/apps/helpers/ags/cfg/modules/dashboard/iconButtons.js similarity index 100% rename from modules/rice/ags/cfg/modules/dashboard/iconButtons.js rename to modules/home/apps/helpers/ags/cfg/modules/dashboard/iconButtons.js diff --git a/modules/rice/ags/cfg/modules/dashboard/notificationList.js b/modules/home/apps/helpers/ags/cfg/modules/dashboard/notificationList.js similarity index 100% rename from modules/rice/ags/cfg/modules/dashboard/notificationList.js rename to modules/home/apps/helpers/ags/cfg/modules/dashboard/notificationList.js diff --git a/modules/rice/ags/cfg/modules/dashboard/volumeSlider.js b/modules/home/apps/helpers/ags/cfg/modules/dashboard/volumeSlider.js similarity index 100% rename from modules/rice/ags/cfg/modules/dashboard/volumeSlider.js rename to modules/home/apps/helpers/ags/cfg/modules/dashboard/volumeSlider.js diff --git a/modules/rice/ags/cfg/modules/dashboard/wifi.js b/modules/home/apps/helpers/ags/cfg/modules/dashboard/wifi.js similarity index 100% rename from modules/rice/ags/cfg/modules/dashboard/wifi.js rename to modules/home/apps/helpers/ags/cfg/modules/dashboard/wifi.js diff --git a/modules/rice/ags/cfg/scss/_colors.scss b/modules/home/apps/helpers/ags/cfg/scss/_colors.scss similarity index 100% rename from modules/rice/ags/cfg/scss/_colors.scss rename to modules/home/apps/helpers/ags/cfg/scss/_colors.scss diff --git a/modules/rice/ags/cfg/scss/bar/_bar.scss b/modules/home/apps/helpers/ags/cfg/scss/bar/_bar.scss similarity index 100% rename from modules/rice/ags/cfg/scss/bar/_bar.scss rename to modules/home/apps/helpers/ags/cfg/scss/bar/_bar.scss diff --git a/modules/rice/ags/cfg/scss/bar/_clock.scss b/modules/home/apps/helpers/ags/cfg/scss/bar/_clock.scss similarity index 100% rename from modules/rice/ags/cfg/scss/bar/_clock.scss rename to modules/home/apps/helpers/ags/cfg/scss/bar/_clock.scss diff --git a/modules/rice/ags/cfg/scss/bar/_media.scss b/modules/home/apps/helpers/ags/cfg/scss/bar/_media.scss similarity index 100% rename from modules/rice/ags/cfg/scss/bar/_media.scss rename to modules/home/apps/helpers/ags/cfg/scss/bar/_media.scss diff --git a/modules/rice/ags/cfg/scss/bar/_notification.scss b/modules/home/apps/helpers/ags/cfg/scss/bar/_notification.scss similarity index 100% rename from modules/rice/ags/cfg/scss/bar/_notification.scss rename to modules/home/apps/helpers/ags/cfg/scss/bar/_notification.scss diff --git a/modules/rice/ags/cfg/scss/bar/_sysinfo.scss b/modules/home/apps/helpers/ags/cfg/scss/bar/_sysinfo.scss similarity index 100% rename from modules/rice/ags/cfg/scss/bar/_sysinfo.scss rename to modules/home/apps/helpers/ags/cfg/scss/bar/_sysinfo.scss diff --git a/modules/rice/ags/cfg/scss/bar/_title.scss b/modules/home/apps/helpers/ags/cfg/scss/bar/_title.scss similarity index 100% rename from modules/rice/ags/cfg/scss/bar/_title.scss rename to modules/home/apps/helpers/ags/cfg/scss/bar/_title.scss diff --git a/modules/rice/ags/cfg/scss/bar/_tray.scss b/modules/home/apps/helpers/ags/cfg/scss/bar/_tray.scss similarity index 100% rename from modules/rice/ags/cfg/scss/bar/_tray.scss rename to modules/home/apps/helpers/ags/cfg/scss/bar/_tray.scss diff --git a/modules/rice/ags/cfg/scss/bar/_workspaces.scss b/modules/home/apps/helpers/ags/cfg/scss/bar/_workspaces.scss similarity index 100% rename from modules/rice/ags/cfg/scss/bar/_workspaces.scss rename to modules/home/apps/helpers/ags/cfg/scss/bar/_workspaces.scss diff --git a/modules/rice/ags/cfg/scss/dashboard/_Slider.scss b/modules/home/apps/helpers/ags/cfg/scss/dashboard/_Slider.scss similarity index 100% rename from modules/rice/ags/cfg/scss/dashboard/_Slider.scss rename to modules/home/apps/helpers/ags/cfg/scss/dashboard/_Slider.scss diff --git a/modules/rice/ags/cfg/scss/dashboard/_calendar.scss b/modules/home/apps/helpers/ags/cfg/scss/dashboard/_calendar.scss similarity index 100% rename from modules/rice/ags/cfg/scss/dashboard/_calendar.scss rename to modules/home/apps/helpers/ags/cfg/scss/dashboard/_calendar.scss diff --git a/modules/rice/ags/cfg/scss/dashboard/_dashboard.scss b/modules/home/apps/helpers/ags/cfg/scss/dashboard/_dashboard.scss similarity index 100% rename from modules/rice/ags/cfg/scss/dashboard/_dashboard.scss rename to modules/home/apps/helpers/ags/cfg/scss/dashboard/_dashboard.scss diff --git a/modules/rice/ags/cfg/scss/dashboard/_notifications.scss b/modules/home/apps/helpers/ags/cfg/scss/dashboard/_notifications.scss similarity index 100% rename from modules/rice/ags/cfg/scss/dashboard/_notifications.scss rename to modules/home/apps/helpers/ags/cfg/scss/dashboard/_notifications.scss diff --git a/modules/rice/ags/cfg/scss/dashboard/_quicktoggles.scss b/modules/home/apps/helpers/ags/cfg/scss/dashboard/_quicktoggles.scss similarity index 100% rename from modules/rice/ags/cfg/scss/dashboard/_quicktoggles.scss rename to modules/home/apps/helpers/ags/cfg/scss/dashboard/_quicktoggles.scss diff --git a/modules/rice/ags/cfg/scss/main.scss b/modules/home/apps/helpers/ags/cfg/scss/main.scss similarity index 100% rename from modules/rice/ags/cfg/scss/main.scss rename to modules/home/apps/helpers/ags/cfg/scss/main.scss diff --git a/modules/rice/ags/cfg/services/brightness.js b/modules/home/apps/helpers/ags/cfg/services/brightness.js similarity index 100% rename from modules/rice/ags/cfg/services/brightness.js rename to modules/home/apps/helpers/ags/cfg/services/brightness.js diff --git a/modules/rice/ags/cfg/style.css b/modules/home/apps/helpers/ags/cfg/style.css similarity index 100% rename from modules/rice/ags/cfg/style.css rename to modules/home/apps/helpers/ags/cfg/style.css diff --git a/modules/rice/ags/cfg/style.cssyazicd b/modules/home/apps/helpers/ags/cfg/style.cssyazicd similarity index 100% rename from modules/rice/ags/cfg/style.cssyazicd rename to modules/home/apps/helpers/ags/cfg/style.cssyazicd diff --git a/modules/rice/ags/cfg/utils/popupWindow.js b/modules/home/apps/helpers/ags/cfg/utils/popupWindow.js similarity index 100% rename from modules/rice/ags/cfg/utils/popupWindow.js rename to modules/home/apps/helpers/ags/cfg/utils/popupWindow.js diff --git a/modules/home/apps/helpers/ags/default.nix b/modules/home/apps/helpers/ags/default.nix new file mode 100644 index 0000000..1f23329 --- /dev/null +++ b/modules/home/apps/helpers/ags/default.nix @@ -0,0 +1,73 @@ +{ + options, + config, + lib, + inputs, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.helpers.ags; + + requiredDeps = with pkgs; [ + config.wayland.windowManager.hyprland.package + bash + coreutils + gawk + sassc + imagemagick + procps + ripgrep + util-linux + gtksourceview + webkitgtk + brightnessctl + gvfs + accountsservice + swww + gnome.gnome-control-center + gnome.nautilus + gnome.totem + loupe + ]; + + guiDeps = with pkgs; [ + gnome.gnome-control-center + mission-center + overskride + wlogout + ]; + + dependencies = requiredDeps ++ guiDeps; +in { + options.apps.helpers.ags = with types; { + enable = mkBoolOpt false "Enable AGS"; + }; + + config = mkIf cfg.enable { + programs.ags = { + enable = true; + + configDir = ./cfg; + + extraPackages = dependencies; + }; + + systemd.user.services.ags = { + Unit = { + Description = "Aylur's Gtk Shell"; + PartOf = [ + "tray.target" + "graphical-session.target" + ]; + }; + Service = { + Environment = "PATH=/run/wrappers/bin:${lib.makeBinPath dependencies}"; + ExecStart = "${config.programs.ags.package}/bin/ags"; + Restart = "on-failure"; + }; + Install.WantedBy = ["graphical-session.target"]; + }; + }; +} diff --git a/modules/home/apps/helpers/anyrun/default.nix b/modules/home/apps/helpers/anyrun/default.nix new file mode 100644 index 0000000..7de301c --- /dev/null +++ b/modules/home/apps/helpers/anyrun/default.nix @@ -0,0 +1,113 @@ +{ + options, + config, + lib, + inputs, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.helpers.anyrun; +in { + options.apps.helpers.anyrun = with types; { + enable = mkBoolOpt false "Enable Anyrun"; + }; + + config = mkIf cfg.enable { + programs.anyrun = { + enable = true; + config = { + plugins = [ + inputs.anyrun.packages.${pkgs.system}.applications + inputs.anyrun.packages.${pkgs.system}.shell + inputs.anyrun.packages.${pkgs.system}.websearch + inputs.anyrun.packages.${pkgs.system}.rink + inputs.anyrun.packages.${pkgs.system}.stdin + ]; + x = {fraction = 0.5;}; + y = {absolute = 0;}; + hideIcons = false; + ignoreExclusiveZones = false; + layer = "overlay"; + hidePluginInfo = true; + closeOnClick = true; + showResultsImmediately = false; + maxEntries = null; + }; + extraCss = '' + *{ + all: unset; + color: #cdd6f4; + font-family: "JetBrainsMono Nerd Font"; + font-weight: bold; + } + #window{ + background-color: transparent; + } + #entry{ + background-color: #1e1e2e; + border-radius: 15px; + border: 3px solid #11111b; + font-size: 16px; + margin-top: 10px; + padding: 1px 15px; + } + #match { + margin-bottom: 2px; + margin-top: 2px; + padding: 1px 15px; + } + #match-desc{ + color: #bac2de; + font-size: 12px; + font-weight: normal; + } + #match:selected { + background: #313244; + border-radius: 15px; + } + #plugin{ + background-color: #1e1e2e; + border-radius: 15px; + border: 3px solid #11111b; + margin-top:10px; + padding: 10px 1px; + } + #plugin > *{ + all:unset; + } + ''; + + extraConfigFiles."applications.ron".text = '' + Config( + desktop_actions: false, + max_entries: 5, + terminal: Some("Kitty"), + ) + ''; + + extraConfigFiles."shell.ron".text = '' + Config( + prefix: ">", + ) + ''; + + extraConfigFiles."websearch.ron".text = '' + Config( + prefix: "", + // Options: Google, Ecosia, Bing, DuckDuckGo, Custom + // + // Custom engines can be defined as such: + // Custom( + // name: "Searx", + // url: "searx.be/?q={}", + // ) + // + // NOTE: `{}` is replaced by the search query and `https://` is automatically added in front. + engines: [DuckDuckGo] + ) + ''; + }; + }; +} diff --git a/modules/home/apps/music/spotify/default.nix b/modules/home/apps/music/spotify/default.nix new file mode 100644 index 0000000..cbba134 --- /dev/null +++ b/modules/home/apps/music/spotify/default.nix @@ -0,0 +1,30 @@ +{ + options, + config, + lib, + ... +}: +with lib; +with lib.custom; let + cfg = config.shells.zsh; +in { + options.apps.music.spotify = with types; { + enable = mkBoolOpt false "Enable Spotify"; + }; + + config = mkIf cfg.enable { + home.packages = [pkgs.spotify]; + + programs.spicetify = { + enable = true; + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + + enabledExtensions = with spicePkgs.extensions; [ + fullAppDisplay + shuffle # shuffle+ (special characters are sanitized out of ext names) + hidePodcasts + ]; + }; + }; +} diff --git a/modules/home/apps/term/kitty/default.nix b/modules/home/apps/term/kitty/default.nix new file mode 100644 index 0000000..5b6998e --- /dev/null +++ b/modules/home/apps/term/kitty/default.nix @@ -0,0 +1,37 @@ +{ + options, + config, + lib, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.term.kitty; +in { + options.apps.term.kitty = with types; { + enable = mkBoolOpt false "Enable Kitty Term"; + }; + + config = mkIf cfg.enable { + programs.kitty = { + enable = true; + font = { + name = "Iosevka Term SemiBold"; + size = 14; + }; + + extraConfig = '' + bold_font Iosevk Term Heavy + italic_font Iosevka Term SemiBold Italic + bold_italic_font Iosevka Term Heavy Italic + ''; + + catppuccin.enable = true; + + settings = { + window_padding_width = 12; + background_opacity = "0.8"; + }; + }; + }; +} diff --git a/modules/home/apps/tools/git/default.nix b/modules/home/apps/tools/git/default.nix new file mode 100644 index 0000000..507ac5e --- /dev/null +++ b/modules/home/apps/tools/git/default.nix @@ -0,0 +1,92 @@ +{ + options, + config, + lib, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.tools.git; +in { + options.apps.tools.git = with types; { + enable = mkBoolOpt false "Enable Git Integration"; + + signByDefault = mkBoolOpt true "Sign by default"; + signingKey = mkStringOpt "5B53E53A9A514DBA" "The KeyID of your GPG signingKey"; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [zsh-forgit gitflow]; + programs.git = { + enable = true; + userName = "zack"; + userEmail = "zackmyers@lavabit.com"; + ignores = [ + ".cache/" + ".DS_Store" + ".idea/" + "*.swp" + "*.elc" + "auto-save-list" + ".direnv/" + "node_modules" + "result" + "result-*" + ]; + signing = { + key = cfg.signingKey; + signByDefault = cfg.signByDefault; + }; + extraConfig = { + init = {defaultBranch = "main";}; + delta = { + options.map-styles = "bold purple => syntax #ca9ee6, bold cyan => syntax #8caaee"; + line-numbers = true; + }; + branch.autosetupmerge = "true"; + push.default = "current"; + merge.stat = "true"; + core.whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol"; + repack.usedeltabaseoffset = "true"; + pull.ff = "only"; + rebase = { + autoSquash = true; + autoStash = true; + }; + rerere = { + autoupdate = true; + enabled = true; + }; + }; + lfs.enable = true; + delta.enable = true; + aliases = { + essa = "push --force"; + co = "checkout"; + fuck = "commit --amend -m"; + c = "commit -m"; + ca = "commit -am"; + forgor = "commit --amend --no-edit"; + graph = "log --all --decorate --graph --oneline"; + oops = "checkout --"; + l = "log"; + r = "rebase"; + s = "status --short"; + ss = "status"; + d = "diff"; + ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)"; + pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)"; + af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)"; + st = "status"; + br = "branch"; + df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}"; + hist = '' + log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all''; + llog = '' + log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative''; + edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`"; + }; + }; + }; +} diff --git a/modules/home-manager/vim/config/README.md b/modules/home/apps/tools/neovim/config/README.md similarity index 100% rename from modules/home-manager/vim/config/README.md rename to modules/home/apps/tools/neovim/config/README.md diff --git a/modules/home-manager/vim/config/init.lua b/modules/home/apps/tools/neovim/config/init.lua similarity index 100% rename from modules/home-manager/vim/config/init.lua rename to modules/home/apps/tools/neovim/config/init.lua diff --git a/modules/home-manager/vim/config/lua/after/plugin/c.lua b/modules/home/apps/tools/neovim/config/lua/after/plugin/c.lua similarity index 100% rename from modules/home-manager/vim/config/lua/after/plugin/c.lua rename to modules/home/apps/tools/neovim/config/lua/after/plugin/c.lua diff --git a/modules/home-manager/vim/config/lua/core/autocmd.lua b/modules/home/apps/tools/neovim/config/lua/core/autocmd.lua similarity index 100% rename from modules/home-manager/vim/config/lua/core/autocmd.lua rename to modules/home/apps/tools/neovim/config/lua/core/autocmd.lua diff --git a/modules/home-manager/vim/config/lua/core/filetypes.lua b/modules/home/apps/tools/neovim/config/lua/core/filetypes.lua similarity index 100% rename from modules/home-manager/vim/config/lua/core/filetypes.lua rename to modules/home/apps/tools/neovim/config/lua/core/filetypes.lua diff --git a/modules/home-manager/vim/config/lua/core/keymaps.lua b/modules/home/apps/tools/neovim/config/lua/core/keymaps.lua similarity index 100% rename from modules/home-manager/vim/config/lua/core/keymaps.lua rename to modules/home/apps/tools/neovim/config/lua/core/keymaps.lua diff --git a/modules/home-manager/vim/config/lua/core/options.lua b/modules/home/apps/tools/neovim/config/lua/core/options.lua similarity index 100% rename from modules/home-manager/vim/config/lua/core/options.lua rename to modules/home/apps/tools/neovim/config/lua/core/options.lua diff --git a/modules/home-manager/vim/config/lua/core/signs.lua b/modules/home/apps/tools/neovim/config/lua/core/signs.lua similarity index 100% rename from modules/home-manager/vim/config/lua/core/signs.lua rename to modules/home/apps/tools/neovim/config/lua/core/signs.lua diff --git a/modules/home-manager/vim/config/lua/lsp/autocmd.lua b/modules/home/apps/tools/neovim/config/lua/lsp/autocmd.lua similarity index 100% rename from modules/home-manager/vim/config/lua/lsp/autocmd.lua rename to modules/home/apps/tools/neovim/config/lua/lsp/autocmd.lua diff --git a/modules/home-manager/vim/config/lua/lsp/config.lua b/modules/home/apps/tools/neovim/config/lua/lsp/config.lua similarity index 100% rename from modules/home-manager/vim/config/lua/lsp/config.lua rename to modules/home/apps/tools/neovim/config/lua/lsp/config.lua diff --git a/modules/home-manager/vim/config/lua/lsp/functions.lua b/modules/home/apps/tools/neovim/config/lua/lsp/functions.lua similarity index 100% rename from modules/home-manager/vim/config/lua/lsp/functions.lua rename to modules/home/apps/tools/neovim/config/lua/lsp/functions.lua diff --git a/modules/home-manager/vim/config/lua/lsp/handlers.lua b/modules/home/apps/tools/neovim/config/lua/lsp/handlers.lua similarity index 100% rename from modules/home-manager/vim/config/lua/lsp/handlers.lua rename to modules/home/apps/tools/neovim/config/lua/lsp/handlers.lua diff --git a/modules/home-manager/vim/config/lua/lsp/keymaps.lua b/modules/home/apps/tools/neovim/config/lua/lsp/keymaps.lua similarity index 100% rename from modules/home-manager/vim/config/lua/lsp/keymaps.lua rename to modules/home/apps/tools/neovim/config/lua/lsp/keymaps.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/core.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/core.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/core.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/core.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/gitsigns.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/gitsigns.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/gitsigns.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/gitsigns.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/neogit.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/neogit.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/neogit.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/neogit.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/nvim-cmp.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/nvim-cmp.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/nvim-cmp.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/nvim-cmp.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/nvim-dap.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/nvim-dap.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/nvim-dap.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/nvim-dap.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/nvim-treesitter.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/nvim-treesitter.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/nvim-treesitter.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/nvim-treesitter.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/overseer.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/overseer.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/overseer.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/overseer.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/session-manager.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/session-manager.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/session-manager.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/session-manager.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/telescope.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/telescope.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/telescope.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/telescope.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/tmux-nav.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/tmux-nav.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/tmux-nav.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/tmux-nav.lua diff --git a/modules/home-manager/vim/config/lua/plugins/editor/toggleterm.lua b/modules/home/apps/tools/neovim/config/lua/plugins/editor/toggleterm.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/editor/toggleterm.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/editor/toggleterm.lua diff --git a/modules/home-manager/vim/config/lua/plugins/init.lua b/modules/home/apps/tools/neovim/config/lua/plugins/init.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/init.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/init.lua diff --git a/modules/home-manager/vim/config/lua/plugins/lsp/null-ls.lua b/modules/home/apps/tools/neovim/config/lua/plugins/lsp/null-ls.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/lsp/null-ls.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/lsp/null-ls.lua diff --git a/modules/home-manager/vim/config/lua/plugins/lsp/server-plugins.lua b/modules/home/apps/tools/neovim/config/lua/plugins/lsp/server-plugins.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/lsp/server-plugins.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/lsp/server-plugins.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/blame.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/blame.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/blame.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/blame.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/ccc.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/ccc.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/ccc.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/ccc.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/clear-action.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/clear-action.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/clear-action.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/clear-action.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/cloak.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/cloak.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/cloak.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/cloak.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/crates.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/crates.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/crates.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/crates.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/document-color.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/document-color.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/document-color.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/document-color.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/flash.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/flash.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/flash.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/flash.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/freeze.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/freeze.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/freeze.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/freeze.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/neorg.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/neorg.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/neorg.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/neorg.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/nvim-devdocs.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/nvim-devdocs.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/nvim-devdocs.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/nvim-devdocs.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/rest.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/rest.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/rest.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/rest.lua diff --git a/modules/home-manager/vim/config/lua/plugins/tools/vim-dadbod.lua b/modules/home/apps/tools/neovim/config/lua/plugins/tools/vim-dadbod.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/tools/vim-dadbod.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/tools/vim-dadbod.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/alpha.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/alpha.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/alpha.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/alpha.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/bufferline.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/bufferline.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/bufferline.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/bufferline.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/catppuccin.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/catppuccin.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/catppuccin.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/catppuccin.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/dressing.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/dressing.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/dressing.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/dressing.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/dropbar.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/dropbar.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/dropbar.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/dropbar.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/icons.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/icons.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/icons.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/icons.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/indent-blankline.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/indent-blankline.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/indent-blankline.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/indent-blankline.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/lualine.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/lualine.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/lualine.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/lualine.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/neo-tree.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/neo-tree.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/neo-tree.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/neo-tree.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/noice.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/noice.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/noice.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/noice.lua diff --git a/modules/home-manager/vim/config/lua/plugins/ui/which-key.lua b/modules/home/apps/tools/neovim/config/lua/plugins/ui/which-key.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/ui/which-key.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/ui/which-key.lua diff --git a/modules/home-manager/vim/config/lua/plugins/utils/lualine_sources.lua b/modules/home/apps/tools/neovim/config/lua/plugins/utils/lualine_sources.lua similarity index 100% rename from modules/home-manager/vim/config/lua/plugins/utils/lualine_sources.lua rename to modules/home/apps/tools/neovim/config/lua/plugins/utils/lualine_sources.lua diff --git a/modules/home-manager/vim/config/lua/utils/configurer.lua b/modules/home/apps/tools/neovim/config/lua/utils/configurer.lua similarity index 100% rename from modules/home-manager/vim/config/lua/utils/configurer.lua rename to modules/home/apps/tools/neovim/config/lua/utils/configurer.lua diff --git a/modules/home-manager/vim/config/lua/utils/functions.lua b/modules/home/apps/tools/neovim/config/lua/utils/functions.lua similarity index 100% rename from modules/home-manager/vim/config/lua/utils/functions.lua rename to modules/home/apps/tools/neovim/config/lua/utils/functions.lua diff --git a/modules/home-manager/vim/config/lua/utils/icons.lua b/modules/home/apps/tools/neovim/config/lua/utils/icons.lua similarity index 100% rename from modules/home-manager/vim/config/lua/utils/icons.lua rename to modules/home/apps/tools/neovim/config/lua/utils/icons.lua diff --git a/modules/home-manager/vim/config/lua/utils/mappings.lua b/modules/home/apps/tools/neovim/config/lua/utils/mappings.lua similarity index 100% rename from modules/home-manager/vim/config/lua/utils/mappings.lua rename to modules/home/apps/tools/neovim/config/lua/utils/mappings.lua diff --git a/modules/home-manager/vim/config/lua/utils/win.lua b/modules/home/apps/tools/neovim/config/lua/utils/win.lua similarity index 100% rename from modules/home-manager/vim/config/lua/utils/win.lua rename to modules/home/apps/tools/neovim/config/lua/utils/win.lua diff --git a/modules/home-manager/vim/config/lua/vscode/keymaps.lua b/modules/home/apps/tools/neovim/config/lua/vscode/keymaps.lua similarity index 100% rename from modules/home-manager/vim/config/lua/vscode/keymaps.lua rename to modules/home/apps/tools/neovim/config/lua/vscode/keymaps.lua diff --git a/modules/home-manager/vim/config/lua/vscode/options.lua b/modules/home/apps/tools/neovim/config/lua/vscode/options.lua similarity index 100% rename from modules/home-manager/vim/config/lua/vscode/options.lua rename to modules/home/apps/tools/neovim/config/lua/vscode/options.lua diff --git a/modules/home-manager/vim/config/lua/vscode/plugins.lua b/modules/home/apps/tools/neovim/config/lua/vscode/plugins.lua similarity index 100% rename from modules/home-manager/vim/config/lua/vscode/plugins.lua rename to modules/home/apps/tools/neovim/config/lua/vscode/plugins.lua diff --git a/modules/home/apps/tools/neovim/default.nix b/modules/home/apps/tools/neovim/default.nix new file mode 100644 index 0000000..8818448 --- /dev/null +++ b/modules/home/apps/tools/neovim/default.nix @@ -0,0 +1,98 @@ +{ + options, + config, + lib, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.tools.neovim; + + nvimDir = "/home/${config.home.username}/nixos/modules/home/apps/tools/neovim"; +in { + options.apps.tools.neovim = with types; { + enable = mkBoolOpt false "Enable Neovim"; + }; + + config = mkIf cfg.enable { + programs.neovim = { + enable = true; + defaultEditor = true; + extraPackages = with pkgs; [ + # Formatters + alejandra # Nix + black # Python + prettierd # Multi-language + shfmt + isort + stylua + + # LSP + lua-language-server + nixd + rust-analyzer + nodePackages.bash-language-server + vscode-langservers-extracted + nodePackages.vscode-json-languageserver + nodePackages.typescript-language-server + tailwindcss-language-server + + # Tools + git + html-tidy + cmake + fzf + charm-freeze + gcc + gnumake + nodejs + fswatch # File watcher utility, replacing libuv.fs_event for neovim 10.0 + sqlite + postgresql + mongosh + gerbera + vscode-extensions.vadimcn.vscode-lldb.adapter + ]; + plugins = [ + pkgs.vimPlugins.lazy-nvim # All other plugins are managed by lazy-nvim + ]; + extraLuaPackages = with pkgs; [ + lua51Packages.lua-curl + lua51Packages.nvim-nio + lua51Packages.xml2lua + lua51Packages.mimetypes + ]; + }; + + xdg.configFile = { + # Raw symlink to the plugin manager lock file, so that it stays writeable + "nvim/lazy-lock.json".source = config.lib.file.mkOutOfStoreSymlink "${nvimDir}/lazy-lock.json"; + "nvim" = { + source = ./config; + recursive = true; + }; + }; + + # home.activation.neovim = hm.dag.entryAfter ["linkGeneration"] '' + # #! /bin/bash + # NVIM_WRAPPER=~/.nix-profile/bin/nvim + # STATE_DIR=~/.local/state/nix/ + # STATE_FILE=$STATE_DIR/lazy-lock-checksum + # LOCK_FILE=~/.config/nvim/lazy-lock.json + # HASH=$(nix-hash --flat $LOCK_FILE) + # CURL_DIR=${pkgs.curl} + # + # [ ! -d $STATE_DIR ] && mkdir -p $STATE_DIR + # [ ! -f $STATE_FILE ] && touch $STATE_FILE + # + # if [ "$(cat $STATE_FILE)" != "$HASH" ]; then + # echo "Syncing neovim plugins" + # PATH="$PATH:${pkgs.git}/bin" $DRY_RUN_CMD $NVIM_WRAPPER --headless "+Lazy! restore" +qa + # $DRY_RUN_CMD echo $HASH >$STATE_FILE + # else + # $VERBOSE_ECHO "Neovim plugins already synced, skipping" + # fi + # ''; + }; +} diff --git a/modules/home-manager/vim/lazy-lock.json b/modules/home/apps/tools/neovim/lazy-lock.json similarity index 100% rename from modules/home-manager/vim/lazy-lock.json rename to modules/home/apps/tools/neovim/lazy-lock.json diff --git a/modules/home/apps/tools/starship/default.nix b/modules/home/apps/tools/starship/default.nix new file mode 100644 index 0000000..ae29393 --- /dev/null +++ b/modules/home/apps/tools/starship/default.nix @@ -0,0 +1,42 @@ +{ + options, + config, + lib, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.tools.starship; +in { + options.apps.tools.starship = with types; { + enable = mkBoolOpt false "Enable Tmux"; + }; + + config = mkIf cfg.enable { + programs.starship = { + enable = true; + enableZshIntegration = config.programs.zsh.enable; + settings = { + add_newline = false; + command_timeout = 1000; + scan_timeout = 3; + character = { + error_symbol = "[󰘧](bold red)"; + success_symbol = "[󰘧](bold green)"; + vicmd_symbol = "[󰘧](bold yellow)"; + format = "$symbol [|](bold bright-black) "; + }; + git_commit = {commit_hash_length = 7;}; + line_break.disabled = false; + lua.symbol = "[](blue) "; + python.symbol = "[](blue) "; + hostname = { + ssh_only = true; + format = "[$hostname](bold blue) "; + disabled = false; + }; + }; + }; + }; +} diff --git a/modules/home/apps/tools/tmux/default.nix b/modules/home/apps/tools/tmux/default.nix new file mode 100644 index 0000000..3dcef82 --- /dev/null +++ b/modules/home/apps/tools/tmux/default.nix @@ -0,0 +1,89 @@ +{ + options, + config, + lib, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.tools.tmux; +in { + options.apps.tools.tmux = with types; { + enable = mkBoolOpt false "Enable Tmux"; + }; + + config = mkIf cfg.enable { + programs.tmux = let + dreamsofcode-io-catppuccin-tmux = + pkgs.tmuxPlugins.mkTmuxPlugin + { + pluginName = "catppuccin"; + version = "unstable-2023-01-06"; + src = pkgs.fetchFromGitHub { + owner = "dreamsofcode-io"; + repo = "catppuccin-tmux"; + rev = "b4e0715356f820fc72ea8e8baf34f0f60e891718"; + sha256 = "sha256-FJHM6LJkiAwxaLd5pnAoF3a7AE1ZqHWoCpUJE0ncCA8="; + }; + }; + in { + enable = true; + shell = "${pkgs.zsh}/bin/zsh"; + historyLimit = 100000; + plugins = with pkgs; [ + { + plugin = dreamsofcode-io-catppuccin-tmux; + extraConfig = ""; + } + tmuxPlugins.sensible + tmuxPlugins.vim-tmux-navigator + tmuxPlugins.yank + ]; + extraConfig = '' + set-option -sa terminal-overrides ",xterm*:Tc" + set -g mouse on + + set -g @catppuccin-flavor 'mocha' + + set -g base-index 1 + set -g pane-base-index 1 + setw -g mode-keys vi + set-window-option -g pane-base-index 1 + set-option -g renumber-windows on + set -g @catppuccin_window_left_separator "" + set -g @catppuccin_window_right_separator " " + set -g @catppuccin_window_middle_separator " █" + set -g @catppuccin_window_number_position "right" + set -g @catppuccin_window_default_fill "number" + set -g @catppuccin_window_default_text "#W" + set -g @catppuccin_window_current_fill "number" + set -g @catppuccin_window_current_text "#W#{?window_zoomed_flag,(),}" + set -g @catppuccin_status_modules_right "directory meetings date_time" + set -g @catppuccin_status_modules_left "session" + set -g @catppuccin_status_left_separator " " + set -g @catppuccin_status_right_separator " " + set -g @catppuccin_status_right_separator_inverse "no" + set -g @catppuccin_status_fill "icon" + set -g @catppuccin_status_connect_separator "no" + set -g @catppuccin_directory_text "#{b:pane_current_path}" + set -g @catppuccin_meetings_text "#($HOME/.config/tmux/scripts/cal.sh)" + set -g @catppuccin_date_time_text "%H:%M" + + bind-key -T copy-mode-vi v send-keys -X begin-selection + bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle + bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel + + bind '"' split-window -v -c "#{pane_current_path}" + bind % split-window -v -c "#{pane_current_path}" + + unbind C-b + set -g prefix C-Space + bind C-Space send-prefix + + bind -n M-H previous-window + bind -n M-L next-window + ''; + }; + }; +} diff --git a/modules/home/apps/web/firefox/default.nix b/modules/home/apps/web/firefox/default.nix new file mode 100644 index 0000000..a3f23e6 --- /dev/null +++ b/modules/home/apps/web/firefox/default.nix @@ -0,0 +1,258 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.apps.web.firefox; +in { + options.apps.web.firefox = with types; { + enable = mkBoolOpt false "Enable or disable firefox"; + + setDefault = mkBoolOpt false "Set Firefox as default browser"; + }; + + config = mkIf cfg.enable { + xdg.mimeApps.defaultApplications = mkIf cfg.setDefault { + "text/html" = "firefox.desktop"; + "x-scheme-handler/http" = "firefox.desktop"; + "x-scheme-handler/https" = "firefox.desktop"; + "image/png" = "feh.desktop"; + }; + + programs.firefox = let + lock-false = { + Value = false; + Status = "locked"; + }; + lock-true = { + Value = true; + Status = "locked"; + }; + in { + enable = true; + package = pkgs.wrapFirefox pkgs.firefox-unwrapped { + extraPolicies = { + DisableTelemetry = true; + + Preferences = { + "app.normandy.api_url" = { + Value = ""; + Status = "locked"; + }; + "app.normandy.enabled" = lock-false; + "app.shield.optoutstudies.enabled" = lock-false; + "app.update.auto" = lock-false; + "beacon.enabled" = lock-false; + "breakpad.reportURL" = { + Value = ""; + Status = "locked"; + }; + "browser.aboutConfig.showWarning" = lock-false; + "browser.cache.offline.enable" = lock-false; + "browser.crashReports.unsubmittedCheck.autoSubmit" = lock-false; + "browser.crashReports.unsubmittedCheck.autoSubmit2" = lock-false; + "browser.crashReports.unsubmittedCheck.enabled" = lock-false; + "browser.disableResetPrompt" = lock-true; + "browser.newtab.preload" = lock-false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false; + "browser.newtabpage.enhanced" = lock-false; + "browser.newtabpage.introShown" = lock-true; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false; + "browser.newtabpage.activity-stream.showSponsored" = lock-false; + "browser.newtabpage.activity-stream.system.showSponsored" = lock-false; + "browser.safebrowsing.appRepURL" = { + Value = ""; + Status = "locked"; + }; + "browser.safebrowsing.blockedURIs.enabled" = lock-false; + "browser.safebrowsing.downloads.enabled" = lock-false; + "browser.safebrowsing.downloads.remote.enabled" = lock-false; + "browser.safebrowsing.downloads.remote.url" = { + Value = ""; + Status = "locked"; + }; + "browser.safebrowsing.enabled" = lock-false; + "browser.safebrowsing.malware.enabled" = lock-false; + "browser.safebrowsing.phishing.enabled" = lock-false; + "browser.selfsupport.url" = { + Value = ""; + Status = "locked"; + }; + "browser.send_pings" = lock-false; + "browser.sessionstore.privacy_level" = { + Value = 0; + Status = "locked"; + }; + "browser.shell.checkDefaultBrowser" = lock-false; + "browser.startup.homepage_override.mstone" = { + Value = "ignore"; + Status = "locked"; + }; + "browser.tabs.crashReporting.sendReport" = lock-false; + "browser.urlbar.groupLabels.enabled" = lock-false; + "browser.urlbar.quicksuggest.enabled" = lock-false; + "browser.urlbar.speculativeConnect.enabled" = lock-false; + "browser.urlbar.trimURLs" = lock-false; + "browser.urlbar.suggest.quicksuggest.sponsored" = lock-false; + "datareporting.healthreport.service.enabled" = lock-false; + "datareporting.healthreport.uploadEnabled" = lock-false; + "datareporting.policy.dataSubmissionEnabled" = lock-false; + "device.sensors.ambientLight.enabled" = lock-false; + "device.sensors.enabled" = lock-false; + "device.sensors.motion.enabled" = lock-false; + "device.sensors.orientation.enabled" = lock-false; + "device.sensors.proximity.enabled" = lock-false; + "dom.battery.enabled" = lock-false; + "dom.event.clipboardevents.enabled" = lock-false; + "dom.webaudio.enabled" = lock-false; + "experiments.activeExperiment" = lock-false; + "experiments.enabled" = lock-false; + "experiments.manifest.uri" = { + Value = ""; + Status = "locked"; + }; + "experiments.supported" = lock-false; + "extensions.ClearURLs@kevinr.whiteList" = { + Value = ""; + Status = "locked"; + }; + "extensions.Decentraleyes@ThomasRientjes.whiteList" = { + Value = ""; + Status = "locked"; + }; + "extensions.FirefoxMulti-AccountContainers@mozilla.whiteList" = { + Value = ""; + Status = "locked"; + }; + "extensions.TemporaryContainers@stoically.whiteList" = { + Value = ""; + Status = "locked"; + }; + "extensions.autoDisableScopes" = 14; + "extensions.getAddons.cache.enabled" = lock-false; + "extensions.getAddons.showPane" = lock-false; + "extensions.greasemonkey.stats.optedin" = lock-false; + "extensions.greasemonkey.stats.url" = { + Value = ""; + Status = "locked"; + }; + "extensions.pocket.enabled" = lock-false; + "extensions.shield-recipe-client.api_url" = { + Value = ""; + Status = "locked"; + }; + "extensions.shield-recipe-client.enabled" = lock-false; + "extensions.webservice.discoverURL" = { + Value = ""; + Status = "locked"; + }; + "media.autoplay.default" = { + Value = 0; + Status = "locked"; + }; + "media.autoplay.enabled" = lock-true; + "media.eme.enabled" = lock-false; + "media.gmp-widevinecdm.enabled" = lock-false; + "media.navigator.enabled" = lock-false; + "media.peerconnection.enabled" = lock-false; + "media.video_stats.enabled" = lock-false; + "network.IDN_show_punycode" = lock-true; + "network.allow-experiments" = lock-false; + "network.captive-portal-service.enabled" = lock-false; + "network.cookie.cookieBehavior" = { + Value = 1; + Status = "locked"; + }; + "network.dns.disablePrefetch" = lock-true; + "network.dns.disablePrefetchFromHTTPS" = lock-true; + "network.http.referer.spoofSource" = lock-true; + "network.http.speculative-parallel-limit" = { + Value = 0; + Status = "locked"; + }; + "network.predictor.enable-prefetch" = lock-false; + "network.predictor.enabled" = lock-false; + "network.prefetch-next" = lock-false; + "network.trr.mode" = { + Value = 5; + Status = "locked"; + }; + "privacy.donottrackheader.enabled" = lock-true; + "privacy.donottrackheader.value" = { + Value = 1; + Status = "locked"; + }; + "privacy.firstparty.isolate" = lock-true; + "privacy.query_stripping" = lock-true; + "privacy.trackingprotection.cryptomining.enabled" = lock-true; + "privacy.trackingprotection.enabled" = lock-true; + "privacy.trackingprotection.fingerprinting.enabled" = lock-true; + "privacy.trackingprotection.pbmode.enabled" = lock-true; + "privacy.usercontext.about_newtab_segregation.enabled" = lock-true; + "security.ssl.disable_session_identifiers" = lock-true; + "services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" = lock-false; + "signon.autofillForms" = lock-false; + "toolkit.telemetry.archive.enabled" = lock-false; + "toolkit.telemetry.bhrPing.enabled" = lock-false; + "toolkit.telemetry.cachedClientID" = { + Value = ""; + Status = "locked"; + }; + "toolkit.telemetry.enabled" = lock-false; + "toolkit.telemetry.firstShutdownPing.enabled" = lock-false; + "toolkit.telemetry.hybridContent.enabled" = lock-false; + "toolkit.telemetry.newProfilePing.enabled" = lock-false; + "toolkit.telemetry.prompted" = { + Value = 2; + Status = "locked"; + }; + "toolkit.telemetry.rejected" = lock-true; + "toolkit.telemetry.reportingpolicy.firstRun" = lock-false; + "toolkit.telemetry.server" = { + Value = ""; + Status = "locked"; + }; + "toolkit.telemetry.shutdownPingSender.enabled" = lock-false; + "toolkit.telemetry.unified" = lock-false; + "toolkit.telemetry.unifiedIsOptIn" = lock-false; + "toolkit.telemetry.updatePing.enabled" = lock-false; + "webgl.renderer-string-override" = { + Value = " "; + Status = "locked"; + }; + "webgl.vendor-string-override" = { + Value = " "; + Status = "locked"; + }; + }; + + ExtensionSettings = with builtins; let + extension = shortId: uuid: { + name = uuid; + value = { + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; + installation_mode = "normal_installed"; + }; + }; + in + listToAttrs [ + (extension "ublock-origin" "uBlock0@raymondhill.net") + (extension "privacy-badger17" "jid1-MnnxcxisBPnSXQ@jetpack") + (extension "1password-x-password-manager" "{d634138d-c276-4fc8-924b-40a0ea21d284}") + (extension "firefox-color" "FirefoxColor@mozilla.com") + (extension "multi-account-containers" "@testpilot-containers") + (extension "temporary-containers" "{c607c8df-14a7-4f28-894f-29e8722976af}") + (extension "styl-us" "{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}") + (extension "betterttv" "firefox@betterttv.net") + (extension "decentraleyes" "jid1-BoFifL9Vbdl2zQ@jetpack") + (extension "canvasblocker" "CanvasBlocker@kkapsner.de") + (extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") + ]; + }; + }; + }; + }; +} diff --git a/modules/home/home/default.nix b/modules/home/home/default.nix new file mode 100644 index 0000000..9e8397d --- /dev/null +++ b/modules/home/home/default.nix @@ -0,0 +1,7 @@ +{ + lib, + namespace, + ... +}: { + home.stateVersion = "23.11"; +} diff --git a/modules/home/rice/gtk/default.nix b/modules/home/rice/gtk/default.nix new file mode 100644 index 0000000..20708de --- /dev/null +++ b/modules/home/rice/gtk/default.nix @@ -0,0 +1,95 @@ +{ + options, + config, + lib, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.rice.gtk; +in { + options.rice.gtk = with types; { + enable = mkBoolOpt false "Enable Zsh Configuration"; + }; + + config = mkIf cfg.enable { + gtk = { + enable = true; + catppuccin.enable = true; + + iconTheme = { + package = pkgs.catppuccin-papirus-folders; + name = "Papirus"; + }; + font = { + name = "Iosevka"; + size = 11; + }; + gtk3.extraConfig = { + gtk-xft-antialias = 1; + gtk-xft-hinting = 1; + gtk-xft-hintstyle = "hintslight"; + gtk-xft-rgba = "rgb"; + gtk-application-prefer-dark-theme = 1; + }; + gtk4.extraConfig.gtk-application-prefer-dark-theme = 1; + gtk2.extraConfig = '' + gtk-xft-antialias=1 + gtk-xft-hinting=1 + gtk-xft-hintstyle="hintslight" + gtk-xft-rgba="rgb" + ''; + }; + + home = { + packages = with pkgs; [ + qt5.qttools + qt6Packages.qtstyleplugin-kvantum + libsForQt5.qtstyleplugin-kvantum + libsForQt5.qt5ct + breeze-icons + ]; + pointerCursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 16; + gtk.enable = true; + x11.enable = true; + }; + + sessionVariables = { + XCURSOR_SIZE = "32"; + GTK_USE_PORTAL = "1"; + }; + }; + qt = { + enable = true; + platformTheme = "qtct"; + style = { + name = "Catppuccin-Mocha-Sapphire"; + package = pkgs.catppuccin-kde.override { + flavour = ["mocha"]; + accents = ["sapphire"]; + }; + }; + }; + xdg.configFile = { + "Kvantum/catppuccin/catppuccin.kvconfig".source = builtins.fetchurl { + url = "https://raw.githubusercontent.com/catppuccin/Kvantum/main/src/Catppuccin-Mocha-Sapphire/Catppuccin-Mocha-Sapphire.kvconfig"; + sha256 = "sha256:0n9f5hysr4k1sf9fd3sgd9fvqwrxrpcvj6vajqmb5c5ji8nv2w3c"; + }; + "Kvantum/catppuccin/catppuccin.svg".source = builtins.fetchurl { + url = "https://raw.githubusercontent.com/catppuccin/Kvantum/main/src/Catppuccin-Mocha-Sapphire/Catppuccin-Mocha-Sapphire.svg"; + sha256 = "sha256:1hq9h34178h0d288hgwb0ngqnixz24m9lk0ahc4dahwqn77fndwf"; + }; + "Kvantum/kvantum.kvconfig".text = '' + [General] + theme=catppuccin + + [Applications] + catppuccin=qt5ct, org.qbittorrent.qBittorrent, hyprland-share-picker + ''; + }; + }; +} diff --git a/modules/home/services/hypridle/default.nix b/modules/home/services/hypridle/default.nix new file mode 100644 index 0000000..920f315 --- /dev/null +++ b/modules/home/services/hypridle/default.nix @@ -0,0 +1,88 @@ +{ + options, + config, + lib, + pkgs, + inputs, + ... +}: +with lib; +with lib.custom; let + cfg = config.services.lock; +in { + options.services.lock = with types; { + enable = mkBoolOpt false "Enable Hypridle Service"; + }; + + config = mkIf cfg.enable { + programs.swaylock = { + enable = true; + package = pkgs.swaylock-effects; + settings = with colors; { + clock = true; + color = base; + font = "Work Sans"; + image = "${wallpaper}"; + show-failed-attempts = false; + indicator = true; + indicator-radius = 200; + indicator-thickness = 20; + line-color = "00000000"; + ring-color = "00000000"; + inside-color = "00000000"; + key-hl-color = "f2cdcd"; + separator-color = "00000000"; + text-color = text; + text-caps-lock-color = ""; + line-ver-color = love; + ring-ver-color = rose; + inside-ver-color = base; + text-ver-color = text; + ring-wrong-color = foam; + text-wrong-color = foam; + inside-wrong-color = base; + inside-clear-color = base; + text-clear-color = text; + ring-clear-color = iris; + line-clear-color = base; + line-wrong-color = base; + bs-hl-color = foam; + line-uses-ring = false; + grace = 2; + grace-no-mouse = true; + grace-no-touch = true; + datestr = "%d.%m"; + fade-in = "0.1"; + ignore-empty-password = true; + }; + }; + + systemd.user.services.hypridle = { + Unit = { + Description = "Idle Daemon for Hyprland"; + }; + Service = { + Type = "simple"; + ExecStart = lib.getExe inputs.hypridle.packages.${pkgs.system}.hypridle; + Restart = "on-failure"; + }; + Install = { + WantedBy = ["hyprland-session.target"]; + }; + }; + + xdg.configFile."hypr/hypridle.conf".text = '' + general { + lock_cmd = ${pkgs.swaylock-effects}/bin/swaylock -fF + before_sleep_cmd = ${pkgs.swaylock-effects}/bin/swaylock -fF # command ran before sleep + ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam) + } + + listener { + timeout = 300 # in seconds + on-timeout = ${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off + on-resume = ${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on + } + ''; + }; +} diff --git a/modules/shell/default.nix b/modules/home/shells/zsh/config/default.nix similarity index 65% rename from modules/shell/default.nix rename to modules/home/shells/zsh/config/default.nix index 5b50d20..fe9b545 100644 --- a/modules/shell/default.nix +++ b/modules/home/shells/zsh/config/default.nix @@ -1,28 +1,7 @@ -{pkgs, ...}: let - texlive = pkgs.texlive.combine { - inherit - (pkgs.texlive) - scheme-small - noto - mweights - cm-super - cmbright - fontaxes - beamer - ; - }; - pandoc-watch = pkgs.writeScriptBin "wpandoc" '' - #!/bin/sh - while inotifywait -e close_write $1; do pandoc $@; done - ''; -in { - imports = [./zsh ./zsh/tools.nix ./tmux.nix ./git.nix ./starship.nix]; +{pkgs, ...}: { + # imports = [./zsh ./zsh/tools.nix ./starship.nix]; home.packages = with pkgs; [ - texlive - pandoc-watch - pandoc - # Tbh should be preinstalled gnumake # Runs programs without installing them comma diff --git a/modules/shell/starship.nix b/modules/home/shells/zsh/config/starship.nix similarity index 100% rename from modules/shell/starship.nix rename to modules/home/shells/zsh/config/starship.nix diff --git a/modules/shell/zsh/aliases.nix b/modules/home/shells/zsh/config/zsh/aliases.nix similarity index 100% rename from modules/shell/zsh/aliases.nix rename to modules/home/shells/zsh/config/zsh/aliases.nix diff --git a/modules/shell/zsh/default.nix b/modules/home/shells/zsh/config/zsh/default.nix similarity index 100% rename from modules/shell/zsh/default.nix rename to modules/home/shells/zsh/config/zsh/default.nix diff --git a/modules/shell/zsh/tools.nix b/modules/home/shells/zsh/config/zsh/tools.nix similarity index 59% rename from modules/shell/zsh/tools.nix rename to modules/home/shells/zsh/config/zsh/tools.nix index 2198e24..fa50434 100644 --- a/modules/shell/zsh/tools.nix +++ b/modules/home/shells/zsh/config/zsh/tools.nix @@ -37,23 +37,23 @@ }; }; }; - bat = { - enable = true; - config = { - pager = "less -FR"; - theme = "catppuccin-frappe"; - }; - themes = { - catppuccin-frappe = { - src = pkgs.fetchFromGitHub { - owner = "catppuccin"; - repo = "bat"; - rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1"; - sha256 = "6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw="; - }; - file = "Catppuccin-frappe.tmTheme"; - }; - }; - }; + # bat = { + # enable = true; + # config = { + # pager = "less -FR"; + # theme = "catppuccin-frappe"; + # }; + # themes = { + # catppuccin-frappe = { + # src = pkgs.fetchFromGitHub { + # owner = "catppuccin"; + # repo = "bat"; + # rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1"; + # sha256 = "6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw="; + # }; + # file = "Catppuccin-frappe.tmTheme"; + # }; + # }; + # }; }; } diff --git a/modules/home/shells/zsh/default.nix b/modules/home/shells/zsh/default.nix new file mode 100644 index 0000000..711e65b --- /dev/null +++ b/modules/home/shells/zsh/default.nix @@ -0,0 +1,86 @@ +{ + options, + config, + lib, + ... +}: +with lib; +with lib.custom; let + cfg = config.shells.zsh; +in { + options.shells.zsh = with types; { + enable = mkBoolOpt false "Enable Zsh Configuration"; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + gnumake + # Runs programs without installing them + comma + + # grep replacement + ripgrep + + # ping, but with cool graph + gping + + # dns client + dogdns + + # neofetch but for git repos + onefetch + + # neofetch but for cpu's + cpufetch + + # download from yt and other websites + yt-dlp + + zsh-history + + # man pages for tiktok attention span mfs + tealdeer + + # markdown previewer + glow + + # profiling tool + hyperfine + + imagemagick + ffmpeg-full + + # preview images in terminal + catimg + + # networking stuff + nmap + wget + + # faster find + fd + + # http request thingy + xh + + # generate regex + grex + + # json thingy + jq + + # syncthnig for acoustic people + rsync + + figlet + # Generate qr codes + qrencode + + # script kidde stuff + hcxdumptool + hashcat + + unzip + ]; + }; +} diff --git a/modules/home/wms/hyprland/default.nix b/modules/home/wms/hyprland/default.nix new file mode 100644 index 0000000..dbb4590 --- /dev/null +++ b/modules/home/wms/hyprland/default.nix @@ -0,0 +1,235 @@ +{ + options, + config, + lib, + inputs, + system, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.wms.hyprland; + + mkService = recursiveUpdate { + Unit.PartOf = ["graphical-session.target"]; + Unit.After = ["graphical-session.target"]; + Install.WantedBy = ["graphical-session.target"]; + }; + + mod = "SUPER"; + modshift = "${mod}SHIFT"; + + # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} (stolen from fufie) + workspaces = builtins.concatLists (builtins.genList ( + x: let + ws = let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in [ + "${mod}, ${ws}, workspace, ${toString (x + 1)}" + "${mod} SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + ] + ) + 10); +in { + options.wms.hyprland = with types; { + enable = mkBoolOpt false "Enable Hyprland"; + }; + + config = mkIf cfg.enable { + wayland.windowManager.hyprland = { + enable = true; + package = inputs.hyprland.packages.${system}.default; + + systemd = { + variables = ["--all"]; + extraCommands = [ + "systemctl --user stop graphical-session.target" + "systemctl --user start hyprland-session.target" + ]; + }; + }; + + wayland.windowManager.hyprland.settings = with colors; { + exec-once = [ + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"" + "sway-audio-idle-inhibit" + "firefox" + "thunderbird" + "vesktop" + "spotify" + "slack" + ]; + + bind = + [ + ''${mod},RETURN,exec,kitty'' + + "${mod},D,exec,killall anyrun || anyrun" + "${mod},Q,killactive" + "${mod},M,exit" + "${mod},P,pseudo" + + "${mod},J,togglesplit," + + "${mod},T,togglegroup," # group focused window + "${modshift},G,changegroupactive," # switch within the active group + "${mod},V,togglefloating," # toggle floating for the focused window + "${mod},F,fullscreen," # fullscreen focused window + + # workspace controls + "${modshift},right,movetoworkspace,+1" # move focused window to the next ws + "${modshift},left,movetoworkspace,-1" # move focused window to the previous ws + "${mod},mouse_down,workspace,e+1" # move to the next ws + "${mod},mouse_up,workspace,e-1" # move to the previous ws + + "${mod},X,exec, ags --toggle-window \"dashboard\"" + "${mod},Print,exec,grim -g \"$(slurp)\" - | wl-copy && wl-paste > ~/Pictures/Screenshots/Screenshot-$(date +%F_%T).png;" + ",Print,exec, grim - | wl-copy" + "${modshift},O,exec,wl-ocr" + + "${mod},Period,exec, tofi-emoji" + + "${modshift},L,exec,swaylock --grace 0" # lock screen + ] + ++ workspaces; + + bindm = [ + "${mod},mouse:272,movewindow" + "${mod},mouse:273,resizewindow" + ]; + + general = { + # gaps + gaps_in = 6; + gaps_out = 12; + + # border thiccness + border_size = 4; + + # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse) + apply_sens_to_raw = 0; + + # active border color + "col.active_border" = "rgb(${rose})"; + "col.inactive_border" = "rgb(${muted})"; + }; + + input = { + kb_layout = "us"; + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + accel_profile = "flat"; + force_no_accel = true; + }; + + decoration = { + # fancy corners + rounding = 10; + # blur + blur = { + enabled = true; + size = 2; + passes = 5; + ignore_opacity = false; + new_optimizations = 1; + contrast = 0.9; + brightness = 0.9; + }; + + # shadow config + drop_shadow = "yes"; + shadow_range = 60; + shadow_render_power = 5; + "col.shadow" = "rgba(07061f29)"; + }; + + misc = { + # disable redundant renders + disable_splash_rendering = true; + force_default_wallpaper = 0; + disable_hyprland_logo = true; + + vfr = true; + + # dpms + mouse_move_enables_dpms = true; # enable dpms on mouse/touchpad action + key_press_enables_dpms = true; # enable dpms on keyboard action + disable_autoreload = true; # autoreload is unnecessary on nixos, because the config is readonly anyway + }; + + xwayland = { + force_zero_scaling = true; + }; + + monitor = ["DP-1,2560x1440@240,0x0,1,bitdepth,10" "HDMI-A-1,disable"]; + + layerrule = [ + "blur, ^(gtk-layer-shell)$" + "blur, ^(launcher)$" + "ignorezero, ^(gtk-layer-shell)$" + "ignorezero, ^(launcher)$" + "blur, notifications" + "ignorezero, notifications" + "blur, bar" + "ignorezero, bar" + "ignorezero, ^(gtk-layer-shell|anyrun)$" + "blur, ^(gtk-layer-shell|anyrun)$" + "noanim, launcher" + "noanim, bar" + ]; + windowrulev2 = [ + # only allow shadows for floating windows + "noshadow, floating:0" + "tile, title:Spotify" + + "idleinhibit focus, class:^(mpv)$" + + "float, title:^(Picture-in-Picture)$" + "pin, title:^(Picture-in-Picture)$" + + "float,class:udiskie" + + # "workspace special silent,class:^(pavucontrol)$" + + "float, class:^(imv)$" + + # throw sharing indicators away + "workspace special silent, title:^(Firefox — Sharing Indicator)$" + "workspace special silent, title:^(.*is sharing (your screen|a window)\.)$" + + "workspace 5, class:^(thunderbird)$" + "workspace 4, title:^(.*(Disc|WebC)ord.*)$" + "workspace 4, class:^(.*Slack.*)$" + "workspace 3, title:^(Spotify Premium)$" + "workspace 2, class:^(firefox)$" + "opacity 0.0 override,class:^(xwaylandvideobridge)$" + "noanim,class:^(xwaylandvideobridge)$" + "noinitialfocus,class:^(xwaylandvideobridge)$" + "maxsize 1 1,class:^(xwaylandvideobridge)$" + "noblur,class:^(xwaylandvideobridge)$" + ]; + }; + + # fake a tray to let apps start + # https://github.com/nix-community/home-manager/issues/2064 + systemd.user.targets.tray = { + Unit = { + Description = "Home Manager System Tray"; + Requires = ["graphical-session-pre.target"]; + }; + }; + + systemd.user.services = { + swaybg = mkService { + Unit.Description = "Wallpaper chooser"; + Service = { + ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}"; + Restart = "always"; + }; + }; + }; + }; +} diff --git a/modules/nixos/hardware/audio/default.nix b/modules/nixos/hardware/audio/default.nix new file mode 100644 index 0000000..0c13ddf --- /dev/null +++ b/modules/nixos/hardware/audio/default.nix @@ -0,0 +1,36 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.hardware.audio; +in { + options.hardware.audio = with types; { + enable = mkBoolOpt false "Enable Audio"; + }; + + config = mkIf cfg.enable { + # Enable sound with pipewire. + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + wireplumber.enable = true; + }; + sound = { + enable = true; + mediaKeys.enable = true; + }; + }; +} diff --git a/modules/nixos/hardware/nvidia/default.nix b/modules/nixos/hardware/nvidia/default.nix new file mode 100644 index 0000000..4acc74e --- /dev/null +++ b/modules/nixos/hardware/nvidia/default.nix @@ -0,0 +1,78 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.hardware.nvidia; +in { + options.hardware.nvidia = with types; { + enable = mkBoolOpt false "Enable drivers for nvidia hardware"; + }; + + config = mkIf cfg.enable { + services.xserver.videoDrivers = ["nvidia"]; + + hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.mkDriver { + version = "555.42.02"; + sha256_64bit = "sha256-k7cI3ZDlKp4mT46jMkLaIrc2YUx1lh1wj/J4SVSHWyk="; + sha256_aarch64 = fakeSha256; + openSha256 = "sha256-rtDxQjClJ+gyrCLvdZlT56YyHQ4sbaL+d5tL4L4VfkA="; + settingsSha256 = "sha256-rtDxQjClJ+gyrCLvdZlT56YyHQ4sbaL+d5tL4L4VfkA="; + persistencedSha256 = fakeSha256; + }; + + hardware.nvidia = { + # Modesetting is required. + modesetting.enable = true; + + # Nvidia power management. Experimental, and can cause sleep/suspend to fail. + # Enable this if you have graphical corruption issues or application crashes after waking + # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead + # of just the bare essentials. + powerManagement.enable = false; + + # Fine-grained power management. Turns off GPU when not in use. + # Experimental and only works on modern Nvidia GPUs (Turing or newer). + powerManagement.finegrained = false; + + # Use the NVidia open source kernel module (not to be confused with the + # independent third-party "nouveau" open source driver). + # Support is limited to the Turing and later architectures. Full list of + # supported GPUs is at: + # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus + # Only available from driver 515.43.04+ + # Currently alpha-quality/buggy, so false is currently the recommended setting. + open = false; + + # Enable the Nvidia settings menu, + # accessible via `nvidia-settings`. + nvidiaSettings = true; + + # Optionally, you may need to select the appropriate driver version for your specific GPU. + # package = config.boot.kernelPackages.nvidiaPackages.beta; + }; + + environment.variables = { + GBM_BACKEND = "nvidia-drm"; + WLR_NO_HARDWARE_CURSORS = "1"; + LIBVA_DRIVER_NAME = "nvidia"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + __NV_PRIME_RENDER_OFFLOAD = "1"; + __VK_LAYER_NV_optimus = "NVIDIA_only"; + NVD_BACKEND = "direct"; + # __GL_GSYNC_ALLOWED = "1"; + # __GL_VRR_ALLOWED = "1"; + XWAYLAND_NO_GLAMOR = "1"; + __GL_MaxFramesAllowed = "1"; + }; + + environment.systemPackages = with pkgs; [ + vulkan-loader + vulkan-validation-layers + vulkan-tools + ]; + }; +} diff --git a/modules/nixos/protocols/wayland/default.nix b/modules/nixos/protocols/wayland/default.nix new file mode 100644 index 0000000..e21741f --- /dev/null +++ b/modules/nixos/protocols/wayland/default.nix @@ -0,0 +1,80 @@ +{ + options, + config, + lib, + pkgs, + inputs, + ... +}: +with lib; +with lib.custom; let + cfg = config.protocols.wayland; +in { + options.protocols.wayland = with types; { + enable = mkBoolOpt false "Enable Wayland Protocol"; + }; + + config = mkIf cfg.enable { + environment.etc."greetd/environments".text = '' + bspwm + Hyprland + ''; + + services = { + greetd = { + enable = true; + settings = rec { + initial_session = { + command = "Hyprland"; + user = "zack"; + }; + default_session = initial_session; + }; + }; + }; + + environment = { + variables = { + NIXOS_OZONE_WL = "1"; + __GL_GSYNC_ALLOWED = "0"; + __GL_VRR_ALLOWED = "0"; + _JAVA_AWT_WM_NONEREPARENTING = "1"; + SSH_AUTH_SOCK = "/run/user/1000/keyring/ssh"; + DISABLE_QT5_COMPAT = "0"; + GDK_BACKEND = "wayland,x11"; + ANKI_WAYLAND = "1"; + DIRENV_LOG_FORMAT = ""; + QT_AUTO_SCREEN_SCALE_FACTOR = "1"; + QT_QPA_PLATFORM = "wayland;xcb"; + DISABLE_QT_COMPAT = "0"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + MOZ_ENABLE_WAYLAND = "1"; + WLR_BACKEND = "wayland"; + WLR_RENDERER = "wayland"; + XDG_SESSION_TYPE = "wayland"; + SDL_VIDEODRIVER = "wayland"; + XDG_CACHE_HOME = "/home/zack/.cache"; + CLUTTER_BACKEND = "wayland"; + }; + loginShellInit = '' + dbus-update-activation-environment --systemd DISPLAY + eval $(gnome-keyring-daemon --start --components=ssh,secrets) + eval $(ssh-agent) + ''; + }; + + hardware.pulseaudio.support32Bit = true; + + xdg.portal = { + enable = true; + config.common.default = "*"; + wlr.enable = true; + extraPortals = [ + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-wlr + inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland + pkgs.xwaylandvideobridge + ]; + }; + }; +} diff --git a/modules/nixos/services/dlna/default.nix b/modules/nixos/services/dlna/default.nix new file mode 100644 index 0000000..bb71ac5 --- /dev/null +++ b/modules/nixos/services/dlna/default.nix @@ -0,0 +1,31 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.services.dlna; +in { + options.services.dlna = with types; { + enable = mkBoolOpt false "Enable MiniDLNA service"; + }; + + config = mkIf cfg.enable { + services.minidlna = { + enable = true; + openFirewall = true; + settings = { + notify_interval = 60; + friendly_name = "ZACKPC"; + media_dir = ["A,/home/zack/Music"]; + inotify = "yes"; + }; + }; + + users.users.minidlna = { + extraGroups = ["users"]; + }; + }; +} diff --git a/modules/nixos/services/vpn/default.nix b/modules/nixos/services/vpn/default.nix new file mode 100644 index 0000000..0721276 --- /dev/null +++ b/modules/nixos/services/vpn/default.nix @@ -0,0 +1,34 @@ +{ + lib, + config, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.services.vpn; +in { + options.services.vpn = with types; { + enable = mkBoolOpt false "Enable MiniDLNA service"; + }; + + config = mkIf cfg.enable { + services.mullvad-vpn.enable = true; + services.openvpn.servers = { + work = { + config = ''config /home/zack/Downloads/zachary_myers.ovpn''; + updateResolvConf = true; + }; + }; + + # disable autoconnect for now + # systemd.services."mullvad-daemon".postStart = let + # mullvad = config.services.mullvad-vpn.package; + # in '' + # while ! ${mullvad}/bin/mullvad status >/dev/null; do sleep 1; done + # ${mullvad}/bin/mullvad auto-connect set on + # ${mullvad}/bin/mullvad tunnel set ipv6 on + # ${mullvad}/bin/mullvad connect + # ''; + }; +} diff --git a/modules/nixos/ui/fonts/default.nix b/modules/nixos/ui/fonts/default.nix new file mode 100644 index 0000000..bc0b92a --- /dev/null +++ b/modules/nixos/ui/fonts/default.nix @@ -0,0 +1,58 @@ +{ + options, + config, + lib, + pkgs, + ... +}: +with lib; +with lib.custom; let + cfg = config.ui.fonts; +in { + options.ui.fonts = with types; { + enable = mkBoolOpt false "Enable Custom Fonts"; + }; + + config = mkIf cfg.enable { + fonts = { + packages = with pkgs; [ + material-icons + material-design-icons + roboto + work-sans + comic-neue + source-sans + twemoji-color-font + comfortaa + inter + lato + lexend + jost + dejavu_fonts + iosevka-bin + noto-fonts + noto-fonts-cjk + noto-fonts-emoji + jetbrains-mono + (nerdfonts.override {fonts = ["Iosevka" "JetBrainsMono"];}) + ]; + + enableDefaultPackages = false; + + # this fixes emoji stuff + fontconfig = { + defaultFonts = { + monospace = [ + "Iosevka" + "Iosevka Nerd Font Complete Mono" + "Iosevka Nerd Font" + "Noto Color Emoji" + ]; + sansSerif = ["Inter" "Noto Color Emoji"]; + serif = ["Noto Serif" "Noto Color Emoji"]; + emoji = ["Noto Color Emoji"]; + }; + }; + }; + }; +} diff --git a/modules/rice/ags/default.nix b/modules/rice/ags/default.nix deleted file mode 100644 index a2189ce..0000000 --- a/modules/rice/ags/default.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ - inputs, - pkgs, - config, - lib, - ... -}: let - requiredDeps = with pkgs; [ - config.wayland.windowManager.hyprland.package - bash - coreutils - gawk - sassc - imagemagick - procps - ripgrep - util-linux - gtksourceview - webkitgtk - brightnessctl - gvfs - accountsservice - swww - gnome.gnome-control-center - gnome.nautilus - gnome.totem - loupe - ]; - - guiDeps = with pkgs; [ - gnome.gnome-control-center - mission-center - overskride - wlogout - ]; - - dependencies = requiredDeps ++ guiDeps; - - cfg = config.programs.ags; -in { - imports = [inputs.ags.homeManagerModules.default]; - - programs.ags = { - enable = true; - - configDir = ./cfg; - - extraPackages = dependencies; - }; - - systemd.user.services.ags = { - Unit = { - Description = "Aylur's Gtk Shell"; - PartOf = [ - "tray.target" - "graphical-session.target" - ]; - }; - Service = { - Environment = "PATH=/run/wrappers/bin:${lib.makeBinPath dependencies}"; - ExecStart = "${cfg.package}/bin/ags"; - Restart = "on-failure"; - }; - Install.WantedBy = ["graphical-session.target"]; - }; -} diff --git a/modules/rice/anyrun/cfg/applications.ron b/modules/rice/anyrun/cfg/applications.ron deleted file mode 100644 index 4742d01..0000000 --- a/modules/rice/anyrun/cfg/applications.ron +++ /dev/null @@ -1,5 +0,0 @@ -Config( - desktop_actions: false, - max_entries: 5, - terminal: Some("Kitty"), -) diff --git a/modules/rice/anyrun/cfg/shell.ron b/modules/rice/anyrun/cfg/shell.ron deleted file mode 100644 index 926bd7a..0000000 --- a/modules/rice/anyrun/cfg/shell.ron +++ /dev/null @@ -1,3 +0,0 @@ -Config( - prefix: ">", -) diff --git a/modules/rice/anyrun/cfg/websearch.ron b/modules/rice/anyrun/cfg/websearch.ron deleted file mode 100644 index ca1f92e..0000000 --- a/modules/rice/anyrun/cfg/websearch.ron +++ /dev/null @@ -1,13 +0,0 @@ -Config( - prefix: "", - // Options: Google, Ecosia, Bing, DuckDuckGo, Custom - // - // Custom engines can be defined as such: - // Custom( - // name: "Searx", - // url: "searx.be/?q={}", - // ) - // - // NOTE: `{}` is replaced by the search query and `https://` is automatically added in front. - engines: [DuckDuckGo] -) diff --git a/modules/rice/anyrun/default.nix b/modules/rice/anyrun/default.nix deleted file mode 100644 index eddb7ee..0000000 --- a/modules/rice/anyrun/default.nix +++ /dev/null @@ -1,102 +0,0 @@ -{ - inputs, - pkgs, - ... -}: { - imports = [inputs.anyrun.homeManagerModules.default]; - - programs.anyrun = { - enable = true; - config = { - plugins = [ - inputs.anyrun.packages.${pkgs.system}.applications - inputs.anyrun.packages.${pkgs.system}.shell - inputs.anyrun.packages.${pkgs.system}.websearch - inputs.anyrun.packages.${pkgs.system}.rink - inputs.anyrun.packages.${pkgs.system}.stdin - ]; - x = {fraction = 0.5;}; - y = {absolute = 0;}; - hideIcons = false; - ignoreExclusiveZones = false; - layer = "overlay"; - hidePluginInfo = true; - closeOnClick = true; - showResultsImmediately = false; - maxEntries = null; - }; - extraCss = '' - *{ - all: unset; - color: #cdd6f4; - font-family: "JetBrainsMono Nerd Font"; - font-weight: bold; - } - #window{ - background-color: transparent; - } - #entry{ - background-color: #1e1e2e; - border-radius: 15px; - border: 3px solid #11111b; - font-size: 16px; - margin-top: 10px; - padding: 1px 15px; - } - #match { - margin-bottom: 2px; - margin-top: 2px; - padding: 1px 15px; - } - #match-desc{ - color: #bac2de; - font-size: 12px; - font-weight: normal; - } - #match:selected { - background: #313244; - border-radius: 15px; - } - #plugin{ - background-color: #1e1e2e; - border-radius: 15px; - border: 3px solid #11111b; - margin-top:10px; - padding: 10px 1px; - } - #plugin > *{ - all:unset; - } - ''; - - extraConfigFiles."applications.ron".text = '' - Config( - desktop_actions: false, - max_entries: 5, - terminal: Some("Kitty"), - ) - ''; - - extraConfigFiles."shell.ron".text = '' - Config( - prefix: ">", - ) - ''; - - extraConfigFiles."websearch.ron".text = '' - Config( - prefix: "", - // Options: Google, Ecosia, Bing, DuckDuckGo, Custom - // - // Custom engines can be defined as such: - // Custom( - // name: "Searx", - // url: "searx.be/?q={}", - // ) - // - // NOTE: `{}` is replaced by the search query and `https://` is automatically added in front. - engines: [DuckDuckGo] - ) - ''; - }; -} diff --git a/modules/rice/dunst.nix b/modules/rice/dunst.nix deleted file mode 100644 index 3df7c05..0000000 --- a/modules/rice/dunst.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - pkgs, - theme, - ... -}: let - inherit (theme) x; -in { - services.dunst = { - enable = true; - package = pkgs.dunst.overrideAttrs (_: { - src = pkgs.fetchFromGitHub { - owner = "sioodmy"; - repo = "dunst"; - rev = "6477864bd870dc74f9cf76bb539ef89051554525"; - sha256 = "FCoGrYipNOZRvee6Ks5PQB5y2IvN+ptCAfNuLXcD8Sc="; - }; - }); - iconTheme = { - package = pkgs.catppuccin-papirus-folders; - name = "Papirus"; - }; - settings = with theme.colors; { - global = { - frame_color = "#${rose}95"; - separator_color = x rose; - width = 440; - height = 280; - offset = "0x15"; - font = "Lexend 12"; - corner_radius = 10; - origin = "top-center"; - notification_limit = 3; - idle_threshold = 120; - ignore_newline = "no"; - mouse_left_click = "close_current"; - mouse_right_click = "close_all"; - sticky_history = "yes"; - history_length = 20; - show_age_threshold = 60; - ellipsize = "middle"; - padding = 10; - always_run_script = true; - frame_width = 2; - transparency = 10; - progress_bar = true; - progress_bar_frame_width = 0; - highlight = x rose; - }; - fullscreen_delay_everything.fullscreen = "delay"; - urgency_low = { - background = "#${subtle}f2"; - foreground = x text; - timeout = 5; - }; - urgency_normal = { - background = "#${subtle}f2"; - foreground = x text; - timeout = 6; - }; - urgency_critical = { - background = "#${subtle}f2"; - foreground = x text; - frame_color = "#${pine}80"; - timeout = 0; - }; - }; - }; -} diff --git a/modules/rice/dwl/default.nix b/modules/rice/dwl/default.nix deleted file mode 100644 index 2c63c08..0000000 --- a/modules/rice/dwl/default.nix +++ /dev/null @@ -1,2 +0,0 @@ -{ -} diff --git a/modules/rice/dwl/dwl-config.h b/modules/rice/dwl/dwl-config.h deleted file mode 100644 index 45ed4db..0000000 --- a/modules/rice/dwl/dwl-config.h +++ /dev/null @@ -1,204 +0,0 @@ -/* appearance */ -static const int sloppyfocus = 1; /* focus follows mouse */ -static const int bypass_surface_visibility = 0; /* 1 means idle inhibitors will disable idle tracking even if it's surface isn't visible */ -static const unsigned int borderpx = 0; /* border pixel of windows */ -static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ -static const float rootcolor[] = {0.3, 0.3, 0.3, 1.0}; -static const float bordercolor[] = {0.5, 0.5, 0.5, 1.0}; -static const float focuscolor[] = {1.0, 0.0, 0.0, 1.0}; -static const int smartborders = 1; -/* To conform the xdg-protocol, set the alpha to zero to restore the old behavior */ -static const float fullscreen_bg[] = {0.1, 0.1, 0.1, 1.0}; - -static const unsigned int gappih = 10; /* horiz inner gap between windows */ -static const unsigned int gappiv = 10; /* vert inner gap between windows */ -static const unsigned int gappoh = 10; /* horiz outer gap between windows and screen edge */ -static const unsigned int gappov = 10; /* vert outer gap between windows and screen edge */ -static const unsigned int monoclegaps = 0; /* vert outer gap between windows and screen edge */ -static const int smartgaps = 1; /* 1 means no outer gap when there is only one window */ - -/* pointer constraints */ -static const int allow_constrain = 1; - -/* cursor warping */ -static const bool cursor_warp = false; - -/* tagging - tagcount must be no greater than 31 */ -static const int tagcount = 9; - -static const Rule rules[] = { - /* app_id title tags mask isfloating monitor */ - /* examples: - */ - { "Gimp", NULL, 0, 1, -1 }, - { NULL, "Ferdium", 1, 0, 2 }, - { "firefox", NULL, 1, 0, 1 }, -}; - -/* layout(s) */ -static const Layout layouts[] = { - /* symbol arrange function */ - { "[]=", tile }, - { "><>", NULL }, /* no layout function means floating behavior */ - { "[M]", monocle }, -}; - -/* monitors */ -static const MonitorRule monrules[] = { - /* name mfact nmaster scale layout rotate/reflect */ - /* example of a HiDPI laptop monitor: - { "eDP-1", 0.5, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL }, - */ - /* defaults */ - {"DP-1", 0.5, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 0, 0, 3840, 2160, 60, 0, 0}, - {"DP-2", 0.5, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 3840, 0, 3840, 2160, 60, 0, 0}, - {"HDMI-A-1", 0.5, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 3840 * 2, 0, 3840, 2160, 60, 0, 0}, -}; - -/* keyboard */ -static const struct xkb_rule_names xkb_rules = { - /* can specify fields: rules, model, layout, variant, options */ - /* example: - .options = "ctrl:nocaps", - */ - .options = NULL, -}; - -static const int repeat_rate = 25; -static const int repeat_delay = 600; -static const char *kblayouts[] = {"us", "cz"}; - -/* Trackpad */ -static const int tap_to_click = 1; -static const int tap_and_drag = 1; -static const int drag_lock = 1; -static const int natural_scrolling = 0; -static const int disable_while_typing = 1; -static const int left_handed = 0; -static const int middle_button_emulation = 0; -/* You can choose between: -LIBINPUT_CONFIG_SCROLL_NO_SCROLL -LIBINPUT_CONFIG_SCROLL_2FG -LIBINPUT_CONFIG_SCROLL_EDGE -LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN -*/ -static const enum libinput_config_scroll_method scroll_method = LIBINPUT_CONFIG_SCROLL_2FG; - -/* You can choose between: -LIBINPUT_CONFIG_CLICK_METHOD_NONE -LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS -LIBINPUT_CONFIG_CLICK_METHOD_CLICKFINGER -*/ -static const enum libinput_config_click_method click_method = LIBINPUT_CONFIG_CLICK_METHOD_BUTTON_AREAS; - -/* You can choose between: -LIBINPUT_CONFIG_SEND_EVENTS_ENABLED -LIBINPUT_CONFIG_SEND_EVENTS_DISABLED -LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE -*/ -static const uint32_t send_events_mode = LIBINPUT_CONFIG_SEND_EVENTS_ENABLED; - -/* You can choose between: -LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT -LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE -*/ -static const enum libinput_config_accel_profile accel_profile = LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE; -static const double accel_speed = 0.0; - -static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TAP_MAP_LRM; - -/* Autostart */ -static const char *const autostart[] = { - "sh", "-c", "swww init", NULL, - "sh", "-c", "sleep 5s && systemctl --user start graphical-session.target", NULL, - "sh", "-c", "ferdium --ozone-platform=wayland", NULL, - "sh", "-c", "firefox", NULL, - "sh", "-c", "firefox", NULL, - //"sh", "-c", "fuzzel_timer", "daemon", NULL, - NULL /* terminate */ -}; - - -/* If you want to use the windows key change this to WLR_MODIFIER_LOGO */ -#define MODKEY WLR_MODIFIER_LOGO -#define TAGKEYS(KEY,SKEY,TAG) \ - { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ - { MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \ - { MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \ - { MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} } - -/* helper for spawning shell commands in the pre dwm-5.0 fashion */ -#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } - -/* commands */ -static const char *termcmd[] = { "kitty", NULL }; -static const char *menucmd[] = { "anyrun", NULL }; -static const char *volume_up_cmd[] = { "wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%+", NULL }; -static const char *volume_down_cmd[] = { "wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", "5%-", NULL }; -static const char *timer_cmd[] = { "timer_fuzzel", NULL }; - -static const char *mpc_play_cmd[] = { "mpc", "play", NULL }; -static const char *mpc_pause_cmd[] = { "mpc", "pause", NULL }; -static const char *mpc_next_cmd[] = { "mpc", "next", NULL }; -static const char *mpc_prev_cmd[] = { "mpc", "prev", NULL }; - -static const Key keys[] = { - /* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */ - /* modifier key function argument */ - { MODKEY, XKB_KEY_Return, spawn, {.v = termcmd} }, - { MODKEY, XKB_KEY_r, spawn, {.v = menucmd} }, - { MODKEY, XKB_KEY_q, killclient, {0} }, - { MODKEY, XKB_KEY_f, togglefullscreen, {0} }, - - { MODKEY, XKB_KEY_p, togglekblayout, {0} }, - - { MODKEY, XKB_KEY_h, focusdirection, {.i = WLR_DIRECTION_LEFT} }, - { MODKEY, XKB_KEY_k, focusdirection, {.i = WLR_DIRECTION_UP} }, - { MODKEY, XKB_KEY_j, focusdirection, {.i = WLR_DIRECTION_DOWN} }, - { MODKEY, XKB_KEY_l, focusdirection, {.i = WLR_DIRECTION_RIGHT} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_H, tagmon, {.i = WLR_DIRECTION_LEFT} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_L, tagmon, {.i = WLR_DIRECTION_RIGHT} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_K, focusstack, {.i = +1} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_J, focusstack, {.i = -1} }, - { 0, XKB_KEY_XF86AudioRaiseVolume, spawn, {.v = volume_up_cmd}}, - { 0, XKB_KEY_XF86AudioLowerVolume, spawn, {.v = volume_down_cmd}}, - { MODKEY, XKB_KEY_t, spawn, {.v = timer_cmd}}, - - { 0, XKB_KEY_XF86AudioPlay, spawn, {.v = mpc_play_cmd}}, - { 0, XKB_KEY_XF86AudioStop, spawn, {.v = mpc_pause_cmd}}, - { 0, XKB_KEY_XF86AudioNext, spawn, {.v = mpc_next_cmd}}, - { 0, XKB_KEY_XF86AudioPrev, spawn, {.v = mpc_prev_cmd}}, - - - { MODKEY, XKB_KEY_d, incnmaster, {.i = -1} }, - { MODKEY, XKB_KEY_i, setlayout, {.v = &layouts[0]} }, - { MODKEY, XKB_KEY_o, setlayout, {.v = &layouts[1]} }, - { MODKEY, XKB_KEY_space, setlayout, {0} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} }, - { MODKEY, XKB_KEY_0, view, {.ui = ~0} }, - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_parenright, tag, {.ui = ~0} }, - { MODKEY, XKB_KEY_comma, focusmon, {.i = WLR_DIRECTION_LEFT} }, - { MODKEY, XKB_KEY_period, focusmon, {.i = WLR_DIRECTION_RIGHT} }, - TAGKEYS( XKB_KEY_1, XKB_KEY_exclam, 0), - TAGKEYS( XKB_KEY_2, XKB_KEY_at, 1), - TAGKEYS( XKB_KEY_3, XKB_KEY_numbersign, 2), - TAGKEYS( XKB_KEY_4, XKB_KEY_dollar, 3), - TAGKEYS( XKB_KEY_5, XKB_KEY_percent, 4), - TAGKEYS( XKB_KEY_6, XKB_KEY_asciicircum, 5), - TAGKEYS( XKB_KEY_7, XKB_KEY_ampersand, 6), - TAGKEYS( XKB_KEY_8, XKB_KEY_asterisk, 7), - TAGKEYS( XKB_KEY_9, XKB_KEY_parenleft, 8), - { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Q, quit, {0} }, - - /* Ctrl-Alt-Backspace and Ctrl-Alt-Fx used to be handled by X server */ - { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_Terminate_Server, quit, {0} }, -#define CHVT(n) { WLR_MODIFIER_CTRL|WLR_MODIFIER_ALT,XKB_KEY_XF86Switch_VT_##n, chvt, {.ui = (n)} } - CHVT(1), CHVT(2), CHVT(3), CHVT(4), CHVT(5), CHVT(6), - CHVT(7), CHVT(8), CHVT(9), CHVT(10), CHVT(11), CHVT(12), -}; - -static const Button buttons[] = { - { MODKEY, BTN_LEFT, moveresize, {.ui = CurMove} }, - { MODKEY, BTN_MIDDLE, togglefloating, {0} }, - { MODKEY, BTN_RIGHT, moveresize, {.ui = CurResize} }, -}; diff --git a/modules/rice/foot.nix b/modules/rice/foot.nix deleted file mode 100644 index fc71a2e..0000000 --- a/modules/rice/foot.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - programs.foot = { - enable = true; - settings = { - cursor = { - color = "191724 e0def4"; - }; - colors = { - alpha = "0.75"; - background = "191724"; - foreground = "e0def4"; - regular0 = "26233a"; # black (Overlay) - regular1 = "eb6f92"; # red (Love) - regular2 = "31748f"; # green (Pine) - regular3 = "f6c177"; # yellow (Gold) - regular4 = "9ccfd8"; # blue (Foam) - regular5 = "c4a7e7"; # magenta (Iris) - regular6 = "ebbcba"; # cyan (Rose) - regular7 = "e0def4"; # white (Text) - - bright0 = "6e6a86"; # bright black (Overlay) - bright1 = "eb6f92"; # bright red (Love) - bright2 = "31748f"; # bright green (Pine) - bright3 = "f6c177"; # bright yellow (Gold) - bright4 = "9ccfd8"; # bright blue (Foam) - bright5 = "c4a7e7"; # bright magenta (Iris) - bright6 = "ebbcba"; # bright cyan (Rose) - bright7 = "e0def4"; # bright white (Text) - }; - csd = { - font = "Iosevka Nerd Font Mono:size=14"; - border-width = 25; - }; - }; - }; -} diff --git a/modules/rice/gtk.nix b/modules/rice/gtk.nix deleted file mode 100644 index 248ed78..0000000 --- a/modules/rice/gtk.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ - pkgs, - lib, - ... -}: { - gtk = { - enable = true; - catppuccin.enable = true; - - iconTheme = { - package = pkgs.catppuccin-papirus-folders; - name = "Papirus"; - }; - font = { - name = "Iosevka"; - size = 11; - }; - gtk3.extraConfig = { - gtk-xft-antialias = 1; - gtk-xft-hinting = 1; - gtk-xft-hintstyle = "hintslight"; - gtk-xft-rgba = "rgb"; - gtk-application-prefer-dark-theme = 1; - }; - gtk4.extraConfig.gtk-application-prefer-dark-theme = 1; - gtk2.extraConfig = '' - gtk-xft-antialias=1 - gtk-xft-hinting=1 - gtk-xft-hintstyle="hintslight" - gtk-xft-rgba="rgb" - ''; - }; - - home = { - packages = with pkgs; [ - qt5.qttools - qt6Packages.qtstyleplugin-kvantum - libsForQt5.qtstyleplugin-kvantum - libsForQt5.qt5ct - breeze-icons - ]; - pointerCursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - size = 16; - gtk.enable = true; - x11.enable = true; - }; - - sessionVariables = { - XCURSOR_SIZE = "32"; - GTK_USE_PORTAL = "1"; - }; - }; - qt = { - enable = true; - platformTheme = "qtct"; - style = { - name = "Catppuccin-Mocha-Sapphire"; - package = pkgs.catppuccin-kde.override { - flavour = ["mocha"]; - accents = ["sapphire"]; - }; - }; - }; - xdg.configFile = { - "Kvantum/catppuccin/catppuccin.kvconfig".source = builtins.fetchurl { - url = "https://raw.githubusercontent.com/catppuccin/Kvantum/main/src/Catppuccin-Mocha-Sapphire/Catppuccin-Mocha-Sapphire.kvconfig"; - sha256 = "sha256:0n9f5hysr4k1sf9fd3sgd9fvqwrxrpcvj6vajqmb5c5ji8nv2w3c"; - }; - "Kvantum/catppuccin/catppuccin.svg".source = builtins.fetchurl { - url = "https://raw.githubusercontent.com/catppuccin/Kvantum/main/src/Catppuccin-Mocha-Sapphire/Catppuccin-Mocha-Sapphire.svg"; - sha256 = "sha256:1hq9h34178h0d288hgwb0ngqnixz24m9lk0ahc4dahwqn77fndwf"; - }; - "Kvantum/kvantum.kvconfig".text = '' - [General] - theme=catppuccin - - [Applications] - catppuccin=qt5ct, org.qbittorrent.qBittorrent, hyprland-share-picker - ''; - }; -} diff --git a/modules/rice/hyprland/binds.nix b/modules/rice/hyprland/binds.nix deleted file mode 100644 index 16ee613..0000000 --- a/modules/rice/hyprland/binds.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - config, - lib, - ... -}: let - mod = "SUPER"; - modshift = "${mod}SHIFT"; - - # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} (stolen from fufie) - workspaces = builtins.concatLists (builtins.genList ( - x: let - ws = let - c = (x + 1) / 10; - in - builtins.toString (x + 1 - (c * 10)); - in [ - "${mod}, ${ws}, workspace, ${toString (x + 1)}" - "${mod} SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" - ] - ) - 10); -in { - wayland.windowManager.hyprland.settings = { - bind = - [ - ''${mod},RETURN,exec,kitty'' - - "${mod},D,exec,killall anyrun || anyrun" - "${mod},Q,killactive" - "${mod},M,exit" - "${mod},P,pseudo" - - "${mod},J,togglesplit," - - "${mod},T,togglegroup," # group focused window - "${modshift},G,changegroupactive," # switch within the active group - "${mod},V,togglefloating," # toggle floating for the focused window - "${mod},F,fullscreen," # fullscreen focused window - - # workspace controls - "${modshift},right,movetoworkspace,+1" # move focused window to the next ws - "${modshift},left,movetoworkspace,-1" # move focused window to the previous ws - "${mod},mouse_down,workspace,e+1" # move to the next ws - "${mod},mouse_up,workspace,e-1" # move to the previous ws - - "${mod},X,exec, ags --toggle-window \"dashboard\"" - "${mod},Print,exec,grim -g \"$(slurp)\" - | wl-copy && wl-paste > ~/Pictures/Screenshots/Screenshot-$(date +%F_%T).png;" - ",Print,exec, grim - | wl-copy" - "${modshift},O,exec,wl-ocr" - - "${mod},Period,exec, tofi-emoji" - - "${modshift},L,exec,swaylock --grace 0" # lock screen - ] - ++ workspaces; - - bindm = [ - "${mod},mouse:272,movewindow" - "${mod},mouse:273,resizewindow" - ]; - }; -} diff --git a/modules/rice/hyprland/config.nix b/modules/rice/hyprland/config.nix deleted file mode 100644 index 96c6c20..0000000 --- a/modules/rice/hyprland/config.nix +++ /dev/null @@ -1,81 +0,0 @@ -# home.nix -{theme, ...}: { - wayland.windowManager.hyprland.settings = with theme.colors; { - exec-once = [ - "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" - "pw-loopback -C \"alsa_input.pci-0000_0d_00.4.analog-stereo\" -P \"Scarlett Solo (3rd Gen.) Headphones / Line 1-2\"" - "sway-audio-idle-inhibit" - "firefox" - "thunderbird" - "vesktop" - "spotify" - "slack" - ]; - - debug = {disable_logs = false;}; - - general = { - # gaps - gaps_in = 6; - gaps_out = 12; - - # border thiccness - border_size = 4; - - # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse) - apply_sens_to_raw = 0; - - # active border color - "col.active_border" = "rgb(${rose})"; - "col.inactive_border" = "rgb(${muted})"; - }; - - input = { - kb_layout = "us"; - sensitivity = 0; # -1.0 - 1.0, 0 means no modification. - accel_profile = "flat"; - force_no_accel = true; - }; - - decoration = { - # fancy corners - rounding = 10; - # blur - blur = { - enabled = true; - size = 2; - passes = 5; - ignore_opacity = false; - new_optimizations = 1; - contrast = 0.9; - brightness = 0.9; - }; - - # shadow config - drop_shadow = "yes"; - shadow_range = 60; - shadow_render_power = 5; - "col.shadow" = "rgba(07061f29)"; - }; - - misc = { - # disable redundant renders - disable_splash_rendering = true; - force_default_wallpaper = 0; - disable_hyprland_logo = true; - - vfr = true; - - # dpms - mouse_move_enables_dpms = true; # enable dpms on mouse/touchpad action - key_press_enables_dpms = true; # enable dpms on keyboard action - disable_autoreload = true; # autoreload is unnecessary on nixos, because the config is readonly anyway - }; - - xwayland = { - force_zero_scaling = true; - }; - - monitor = ["DP-1,2560x1440@240,0x0,1,bitdepth,10" "HDMI-A-1,disable"]; - }; -} diff --git a/modules/rice/hyprland/default.nix b/modules/rice/hyprland/default.nix deleted file mode 100644 index b8fdbe8..0000000 --- a/modules/rice/hyprland/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - pkgs, - lib, - inputs, - theme, - ... -}: let - mkService = lib.recursiveUpdate { - Unit.PartOf = ["graphical-session.target"]; - Unit.After = ["graphical-session.target"]; - Install.WantedBy = ["graphical-session.target"]; - }; -in { - imports = [./config.nix ./binds.nix ./rules.nix]; - wayland.windowManager.hyprland = { - enable = true; - package = inputs.hyprland.packages.${pkgs.system}.default; - - systemd = { - variables = ["--all"]; - extraCommands = [ - "systemctl --user stop graphical-session.target" - "systemctl --user start hyprland-session.target" - ]; - }; - }; - - # fake a tray to let apps start - # https://github.com/nix-community/home-manager/issues/2064 - systemd.user.targets.tray = { - Unit = { - Description = "Home Manager System Tray"; - Requires = ["graphical-session-pre.target"]; - }; - }; - - systemd.user.services = { - swaybg = mkService { - Unit.Description = "Wallpaper chooser"; - Service = { - ExecStart = "${lib.getExe pkgs.swaybg} -i ${theme.wallpaper}"; - Restart = "always"; - }; - }; - }; -} diff --git a/modules/rice/hyprland/rules.nix b/modules/rice/hyprland/rules.nix deleted file mode 100644 index a756a49..0000000 --- a/modules/rice/hyprland/rules.nix +++ /dev/null @@ -1,49 +0,0 @@ -{...}: { - wayland.windowManager.hyprland.settings = { - layerrule = [ - "blur, ^(gtk-layer-shell)$" - "blur, ^(launcher)$" - "ignorezero, ^(gtk-layer-shell)$" - "ignorezero, ^(launcher)$" - "blur, notifications" - "ignorezero, notifications" - "blur, bar" - "ignorezero, bar" - "ignorezero, ^(gtk-layer-shell|anyrun)$" - "blur, ^(gtk-layer-shell|anyrun)$" - "noanim, launcher" - "noanim, bar" - ]; - windowrulev2 = [ - # only allow shadows for floating windows - "noshadow, floating:0" - "tile, title:Spotify" - - "idleinhibit focus, class:^(mpv)$" - - "float, title:^(Picture-in-Picture)$" - "pin, title:^(Picture-in-Picture)$" - - "float,class:udiskie" - - # "workspace special silent,class:^(pavucontrol)$" - - "float, class:^(imv)$" - - # throw sharing indicators away - "workspace special silent, title:^(Firefox — Sharing Indicator)$" - "workspace special silent, title:^(.*is sharing (your screen|a window)\.)$" - - "workspace 5, class:^(thunderbird)$" - "workspace 4, title:^(.*(Disc|WebC)ord.*)$" - "workspace 4, class:^(.*Slack.*)$" - "workspace 3, title:^(Spotify Premium)$" - "workspace 2, class:^(firefox)$" - "opacity 0.0 override,class:^(xwaylandvideobridge)$" - "noanim,class:^(xwaylandvideobridge)$" - "noinitialfocus,class:^(xwaylandvideobridge)$" - "maxsize 1 1,class:^(xwaylandvideobridge)$" - "noblur,class:^(xwaylandvideobridge)$" - ]; - }; -} diff --git a/modules/rice/kitty.nix b/modules/rice/kitty.nix deleted file mode 100644 index cb62806..0000000 --- a/modules/rice/kitty.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - programs.kitty = { - enable = true; - font = { - name = "Iosevka Term SemiBold"; - size = 14; - }; - - extraConfig = '' - bold_font Iosevk Term Heavy - italic_font Iosevka Term SemiBold Italic - bold_italic_font Iosevka Term Heavy Italic - ''; - - catppuccin.enable = true; - - # theme = "catppuccin"; - - settings = { - window_padding_width = 12; - background_opacity = "0.8"; - - # foreground = "#a9b1d6"; - # background = "#1a1b26"; - # cursor = "#a9b1d6"; - # - # color0 = "#1a1b26"; - # color8 = "#4e5173"; - # - # color1 = "#F7768E"; - # color9 = "#F7768E"; - # - # color2 = "#9ECE6A"; - # color10 = "#9ECE6A"; - # - # color3 = "#E0AF68"; - # color11 = "#E0AF68"; - # - # color4 = "#7AA2F7"; - # color12 = "#7AA2F7"; - # - # color5 = "#9a7ecc"; - # color13 = "#9a7ecc"; - # - # color6 = "#4abaaf"; - # color14 = "#4abaaf"; - # - # color7 = "#acb0d0"; - # color15 = "#acb0d0"; - }; - }; -} diff --git a/modules/rice/rio.nix b/modules/rice/rio.nix deleted file mode 100644 index c9ce127..0000000 --- a/modules/rice/rio.nix +++ /dev/null @@ -1,63 +0,0 @@ -{inputs, ...}: { - programs.rio = { - enable = true; - package = inputs.rio-term.packages.x86_64-linux.default; - catppuccin.enable = true; - settings = { - padding-x = 10; - # colors = { - # background = "#1a1b26"; - # foreground = "#e0def4"; - # selection-background = "#e0def4"; - # selection-foreground = "#191724"; - # cursor = "#e0def4"; - # black = "#26233a"; - # red = "#eb6f92"; - # green = "#9ccfd8"; - # yellow = "#f6c177"; - # blue = "#31748f"; - # magenta = "#c4a7e7"; - # cyan = "#ebbcba"; - # white = "#e0def4"; - # light_black = "#6e6a86"; - # light_red = "#eb6f92"; - # light_green = "#9ccfd8"; - # light_yellow = "#f6c177"; - # light_blue = "#31748f"; - # light_magenta = "#c4a7e7"; - # light_cyan = "#ebbcba"; - # light_white = "#e0def4"; - # }; - - fonts = { - size = 18; - - # family = "Iosevka"; - regular = { - family = "Iosevka Nerd Font Mono"; - style = "normal"; - weight = 600; - }; - bold = { - family = "Iosevka Nerd Font Mono"; - style = "normal"; - weight = 800; - }; - italic = { - family = "Iosevka Nerd Font Mono"; - style = "italic"; - weight = 600; - }; - bold-italic = { - family = "Iosevka Nerd Font Mono"; - style = "italic"; - weight = 800; - }; - }; - - window = { - background-opacity = 0.8; - }; - }; - }; -} diff --git a/modules/rice/sway/default.nix b/modules/rice/sway/default.nix deleted file mode 100644 index b24e0e5..0000000 --- a/modules/rice/sway/default.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - pkgs, - lib, - theme, - ... -}: let - mkService = lib.recursiveUpdate { - Unit.PartOf = ["graphical-session.target"]; - Unit.After = ["graphical-session.target"]; - Install.WantedBy = ["graphical-session.target"]; - }; -in { - wayland.windowManager.sway = { - enable = true; - # package = pkgs.swayfx; - catppuccin.enable = true; - config = { - terminal = "kitty"; - startup = [{command = "firefox";}]; - - menu = "wofi --show drun"; - - input = { - "Logitech USB Receiver Keyboard" = { - accel_profile = "flat"; - pointer_accel = "0"; - }; - "Logitech USB Receiver" = { - accel_profile = "flat"; - pointer_accel = "0"; - }; - }; - - output = { - DP-1 = { - mode = "2560x1440@239.972Hz"; - }; - HDMI-A-1 = { - disable = "disable"; - }; - }; - }; - extraOptions = ["--unsupported-gpu"]; - }; - - systemd.user.services = { - swaybg = mkService { - Unit.Description = "Wallpaper chooser"; - Service = { - ExecStart = "${lib.getExe pkgs.swaybg} -i ${theme.wallpaper}"; - Restart = "always"; - }; - }; - }; -} diff --git a/modules/rice/waybar/crypto.py b/modules/rice/waybar/crypto.py deleted file mode 100644 index bd7467c..0000000 --- a/modules/rice/waybar/crypto.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python -import requests -import json - - -url = "https://api.coingecko.com/api/v3/coins/markets" -params = { - "vs_currency": "usd", - "order": "market_cap_desc", - "per_page": 10, - "price_change_percentage": "24h", - "page": 1, -} - -response = requests.get(url, params=params) - -if response.status_code == 200: - top_cryptos = response.json() - tooltip = 'Crypto\n' - for crypto in top_cryptos: - name = crypto["name"] - symbol = crypto["symbol"] - price = crypto["current_price"] - change = crypto["price_change_percentage_24h"] - tooltip += str(f" {name}: ${price} | {change:.2f}%\n") - - out_data = { - "text": f"󰠓", - "alt": f"", - "tooltip": tooltip, - "class": "weather", - } - print(json.dumps(out_data)) -else: - exit(1) diff --git a/modules/rice/waybar/default.nix b/modules/rice/waybar/default.nix deleted file mode 100644 index cffcaa9..0000000 --- a/modules/rice/waybar/default.nix +++ /dev/null @@ -1,135 +0,0 @@ -{ - pkgs, - lib, - inputs, - ... -}: -with lib; let - waybar-wttr = pkgs.stdenv.mkDerivation { - name = "waybar-wttr"; - buildInputs = [ - (pkgs.python39.withPackages - (pythonPackages: with pythonPackages; [requests])) - ]; - unpackPhase = "true"; - installPhase = '' - mkdir -p $out/bin - cp ${./waybar-wttr.py} $out/bin/waybar-wttr - chmod +x $out/bin/waybar-wttr - ''; - }; -in { - home.packages = [waybar-wttr]; - programs.waybar = { - enable = true; - style = import ./style.nix; - package = inputs.waybar.packages.x86_64-linux.waybar; - systemd = { - enable = true; - target = "hyprland-session.target"; - }; - settings = { - mainBar = { - layer = "top"; - position = "left"; - width = 57; - spacing = 7; - modules-left = [ - "custom/search" - "hyprland/workspaces" - "custom/lock" - "custom/weather" - "backlight" - "battery" - ]; - modules-center = []; - modules-right = ["pulseaudio" "network" "clock" "tray" "custom/power"]; - "hyprland/workspaces" = { - on-click = "activate"; - format = "{icon}"; - active-only = false; - format-icons = { - "1" = "一"; - "2" = "二"; - "3" = "三"; - "4" = "四"; - "5" = "五"; - "6" = "六"; - "7" = "七"; - "8" = "八"; - "9" = "九"; - "10" = "十"; - }; - - persistent_workspaces = { - "*" = 5; - }; - }; - "custom/search" = { - format = " "; - tooltip = false; - on-click = "${pkgs.wofi}/bin/wofi --show drun"; - }; - - "custom/weather" = { - format = "{}"; - tooltip = true; - interval = 3600; - exec = "waybar-wttr"; - return-type = "json"; - }; - "custom/lock" = { - tooltip = false; - on-click = "sh -c '(sleep 0.5s; swaylock)' & disown"; - format = ""; - }; - "custom/power" = { - tooltip = false; - on-click = "wlogout &"; - format = ""; - }; - clock = { - format = '' - {:%H - %M}''; - tooltip-format = '' - {:%Y %B} - {calendar}''; - }; - backlight = { - format = "{icon}"; - format-icons = ["" "" "" "" "" "" "" "" ""]; - }; - battery = { - states = { - warning = 30; - critical = 15; - }; - format = "{icon}"; - format-charging = "{icon}\n󰚥"; - tooltip-format = "{timeTo} {capacity}% 󱐋{power}"; - format-icons = ["󰂃" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"]; - }; - network = { - format-wifi = "󰤨"; - format-ethernet = "󰤨"; - format-alt = "󰤨"; - format-disconnected = "󰤭"; - tooltip-format = "{ipaddr}/{ifname} via {gwaddr} ({signalStrength}%)"; - }; - pulseaudio = { - scroll-step = 5; - tooltip = true; - tooltip-format = "{volume}% {format_source}"; - on-click = "${pkgs.killall}/bin/killall pavucontrol || ${pkgs.pavucontrol}/bin/pavucontrol"; - format = " {icon}\n{volume}%"; - format-bluetooth = "󰂯 {icon} {volume}%"; - format-muted = "󰝟 "; - format-icons = { - default = ["" "" " "]; - }; - }; - }; - }; - }; -} diff --git a/modules/rice/waybar/sakura.png b/modules/rice/waybar/sakura.png deleted file mode 100644 index 21e463c..0000000 Binary files a/modules/rice/waybar/sakura.png and /dev/null differ diff --git a/modules/rice/waybar/style.nix b/modules/rice/waybar/style.nix deleted file mode 100644 index 27e5798..0000000 --- a/modules/rice/waybar/style.nix +++ /dev/null @@ -1,129 +0,0 @@ -'' - * { - /* `otf-font-awesome` is required to be installed for icons */ - font-family: Material Design Icons, Iosevka Nerd Font; - } - - window#waybar { - background-color: rgba(48, 52, 70, 0.88); - border-radius: 0px; - color: #c6d0f5; - font-size: 20px; - /* transition-property: background-color; */ - transition-duration: 0.5s; - } - - window#waybar.hidden { - opacity: 0.2; - } - - #workspaces { - font-size: 15px; - background-color: #414559; - } - - #pulseaudio { - color: #a6d189; - } - #network { - color: #8caaee; - } - - #custom-search, - #clock { - background-color: #414559; - } - - #workspaces button { - background-color: transparent; - color: #8caaee; - /* Use box-shadow instead of border so the text isn't offset */ - box-shadow: inset 0 -3px transparent; - } - - /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ - #workspaces button:hover { - color: #85c1dc; - } - - #custom-power { - color: #e78284; - } - - #custom-lock { - color: #8caaee; - } - - #workspaces button.active { - color: #e5c890; - } - - #workspaces button.urgent { - background-color: #e78284; - } - - #clock, - #network, - #cpu, - #battery, - #backlight, - #memory, - #workspaces, - #custom-search, - #custom-power, - #custom-todo, - #custom-lock, - #custom-weather, - #custom-btc, - #custom-eth, - #volume, - #pulseaudio { - border-radius: 15px; - margin: 0px 7px 0px 7px; - background-color: rgba(65, 69, 89, 0.9); - padding: 10px 0px 10px 0px; - } - - #custom-power { - margin-bottom: 7px; - padding-right: 6px; - } - #custom-search { - background-image: url("${./sakura.png}"); - background-size: 60%; - background-position: center; - background-repeat: no-repeat; - margin-top: 7px; - } - #clock { - font-weight: 700; - font-size: 20px; - padding: 5px 0px 5px 0px; - font-family: "Iosevka Term"; - } - #backlight { - padding-right: 2px; - color: #e5c890; - } - #battery { - color: #a6d189; - } - - #battery.warning { - color: #ef9f76; - } - - #battery.critical:not(.charging) { - color: #e78284; - } - tooltip { - font-family: 'Lato', sans-serif; - border-radius: 15px; - padding: 20px; - margin: 30px; - } - tooltip label { - font-family: 'Lato', sans-serif; - padding: 20px; - } -'' diff --git a/modules/rice/waybar/waybar-wttr.py b/modules/rice/waybar/waybar-wttr.py deleted file mode 100644 index a55dfe5..0000000 --- a/modules/rice/waybar/waybar-wttr.py +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env python - -import json -import requests -from datetime import datetime - -WEATHER_CODES = { - '113': '☀️ ', - '116': '⛅ ', - '119': '☁️ ', - '122': '☁️ ', - '143': '☁️ ', - '176': '🌧️', - '179': '🌧️', - '182': '🌧️', - '185': '🌧️', - '200': '⛈️ ', - '227': '🌨️', - '230': '🌨️', - '248': '☁️ ', - '260': '☁️ ', - '263': '🌧️', - '266': '🌧️', - '281': '🌧️', - '284': '🌧️', - '293': '🌧️', - '296': '🌧️', - '299': '🌧️', - '302': '🌧️', - '305': '🌧️', - '308': '🌧️', - '311': '🌧️', - '314': '🌧️', - '317': '🌧️', - '320': '🌨️', - '323': '🌨️', - '326': '🌨️', - '329': '❄️ ', - '332': '❄️ ', - '335': '❄️ ', - '338': '❄️ ', - '350': '🌧️', - '353': '🌧️', - '356': '🌧️', - '359': '🌧️', - '362': '🌧️', - '365': '🌧️', - '368': '🌧️', - '371': '❄️', - '374': '🌨️', - '377': '🌨️', - '386': '🌨️', - '389': '🌨️', - '392': '🌧️', - '395': '❄️ ' -} - -data = {} - - -weather = requests.get("https://wttr.in/?format=j1").json() - - -def format_time(time): - return time.replace("00", "").zfill(2) - - -def format_temp(temp): - return (hour['FeelsLikeF']+"°").ljust(3) - - -def format_chances(hour): - chances = { - "chanceoffog": "Fog", - "chanceoffrost": "Frost", - "chanceofovercast": "Overcast", - "chanceofrain": "Rain", - "chanceofsnow": "Snow", - "chanceofsunshine": "Sunshine", - "chanceofthunder": "Thunder", - "chanceofwindy": "Wind" - } - - conditions = [] - for event in chances.keys(): - if int(hour[event]) > 0: - conditions.append(chances[event]+" "+hour[event]+"%") - return ", ".join(conditions) - -tempint = int(weather['current_condition'][0]['FeelsLikeC']) -extrachar = '' -if tempint >= 0 and tempint < 10: - extrachar = '+' - - -data['text'] = ' '+WEATHER_CODES[weather['current_condition'][0]['weatherCode']] + \ - "\n "+extrachar+weather['current_condition'][0]['FeelsLikeF']+"°" - -data['tooltip'] = f"{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_F']}°\n" -data['tooltip'] += f"Feels like: {weather['current_condition'][0]['FeelsLikeF']}°\n" -data['tooltip'] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n" -data['tooltip'] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n" -for i, day in enumerate(weather['weather']): - data['tooltip'] += f"\n" - if i == 0: - data['tooltip'] += "Today, " - if i == 1: - data['tooltip'] += "Tomorrow, " - data['tooltip'] += f"{day['date']}\n" - data['tooltip'] += f"⬆️ {day['maxtempF']}° ⬇️ {day['mintempF']}° " - data['tooltip'] += f"🌅 {day['astronomy'][0]['sunrise']} 🌇 {day['astronomy'][0]['sunset']}\n" - for hour in day['hourly']: - if i == 0: - if int(format_time(hour['time'])) < datetime.now().hour-2: - continue - data['tooltip'] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeC'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n" - - -print(json.dumps(data)) diff --git a/modules/rice/wofi.nix b/modules/rice/wofi.nix deleted file mode 100644 index ad430ec..0000000 --- a/modules/rice/wofi.nix +++ /dev/null @@ -1,72 +0,0 @@ -{theme, ...}: -with theme.colors; { - programs.wofi = { - enable = true; - settings = { - hide_scroll = true; - show = "drun"; - width = "30%"; - lines = 8; - line_wrap = "word"; - term = "kitty"; - allow_markup = true; - always_parse_args = false; - show_all = true; - print_command = true; - layer = "overlay"; - allow_images = true; - sort_order = "alphabetical"; - gtk_dark = true; - prompt = ""; - image_size = 20; - display_generic = false; - location = "center"; - key_expand = "Tab"; - insensitive = false; - }; - - style = '' - * { - font-family: Iosevka Semibold; - font-size: 16px; - color: #${text}; - background: transparent; - } - - #window { - background: #${surface}; - margin: auto; - padding: 10px; - border-radius: 20px; - border: 4px solid #${love}; - } - - #input { - padding: 10px; - margin-bottom: 10px; - border-radius: 15px; - } - - #outer-box { - padding: 20px; - } - - #img { - margin-right: 6px; - } - - #entry { - padding: 10px; - border-radius: 15px; - } - - #entry:selected { - background-color: #${subtle}; - } - - #text { - margin: 2px; - } - ''; - }; -} diff --git a/modules/shell/git.nix b/modules/shell/git.nix deleted file mode 100644 index ea53fb7..0000000 --- a/modules/shell/git.nix +++ /dev/null @@ -1,73 +0,0 @@ -{pkgs, ...}: { - home.packages = with pkgs; [zsh-forgit gitflow]; - programs.git = { - enable = true; - userName = "zack"; - userEmail = "zackmyers@lavabit.com"; - ignores = [ - ".cache/" - ".DS_Store" - ".idea/" - "*.swp" - "*.elc" - "auto-save-list" - ".direnv/" - "node_modules" - "result" - "result-*" - ]; - signing = { - key = "5B53E53A9A514DBA"; - signByDefault = true; - }; - extraConfig = { - init = {defaultBranch = "main";}; - delta = { - options.map-styles = "bold purple => syntax #ca9ee6, bold cyan => syntax #8caaee"; - line-numbers = true; - }; - branch.autosetupmerge = "true"; - push.default = "current"; - merge.stat = "true"; - core.whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol"; - repack.usedeltabaseoffset = "true"; - pull.ff = "only"; - rebase = { - autoSquash = true; - autoStash = true; - }; - rerere = { - autoupdate = true; - enabled = true; - }; - }; - lfs.enable = true; - delta.enable = true; - aliases = { - essa = "push --force"; - co = "checkout"; - fuck = "commit --amend -m"; - c = "commit -m"; - ca = "commit -am"; - forgor = "commit --amend --no-edit"; - graph = "log --all --decorate --graph --oneline"; - oops = "checkout --"; - l = "log"; - r = "rebase"; - s = "status --short"; - ss = "status"; - d = "diff"; - ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)"; - pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)"; - af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)"; - st = "status"; - br = "branch"; - df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}"; - hist = '' - log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all''; - llog = '' - log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative''; - edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`"; - }; - }; -} diff --git a/modules/shell/tmux.nix b/modules/shell/tmux.nix deleted file mode 100644 index 5631faa..0000000 --- a/modules/shell/tmux.nix +++ /dev/null @@ -1,73 +0,0 @@ -{pkgs, ...}: let - dreamsofcode-io-catppuccin-tmux = - pkgs.tmuxPlugins.mkTmuxPlugin - { - pluginName = "catppuccin"; - version = "unstable-2023-01-06"; - src = pkgs.fetchFromGitHub { - owner = "dreamsofcode-io"; - repo = "catppuccin-tmux"; - rev = "b4e0715356f820fc72ea8e8baf34f0f60e891718"; - sha256 = "sha256-FJHM6LJkiAwxaLd5pnAoF3a7AE1ZqHWoCpUJE0ncCA8="; - }; - }; -in { - programs.tmux = { - enable = true; - shell = "${pkgs.zsh}/bin/zsh"; - historyLimit = 100000; - plugins = with pkgs; [ - { - plugin = dreamsofcode-io-catppuccin-tmux; - extraConfig = ""; - } - tmuxPlugins.sensible - tmuxPlugins.vim-tmux-navigator - tmuxPlugins.yank - ]; - extraConfig = '' - set-option -sa terminal-overrides ",xterm*:Tc" - set -g mouse on - - set -g @catppuccin-flavor 'mocha' - - set -g base-index 1 - set -g pane-base-index 1 - setw -g mode-keys vi - set-window-option -g pane-base-index 1 - set-option -g renumber-windows on - set -g @catppuccin_window_left_separator "" - set -g @catppuccin_window_right_separator " " - set -g @catppuccin_window_middle_separator " █" - set -g @catppuccin_window_number_position "right" - set -g @catppuccin_window_default_fill "number" - set -g @catppuccin_window_default_text "#W" - set -g @catppuccin_window_current_fill "number" - set -g @catppuccin_window_current_text "#W#{?window_zoomed_flag,(),}" - set -g @catppuccin_status_modules_right "directory meetings date_time" - set -g @catppuccin_status_modules_left "session" - set -g @catppuccin_status_left_separator " " - set -g @catppuccin_status_right_separator " " - set -g @catppuccin_status_right_separator_inverse "no" - set -g @catppuccin_status_fill "icon" - set -g @catppuccin_status_connect_separator "no" - set -g @catppuccin_directory_text "#{b:pane_current_path}" - set -g @catppuccin_meetings_text "#($HOME/.config/tmux/scripts/cal.sh)" - set -g @catppuccin_date_time_text "%H:%M" - - bind-key -T copy-mode-vi v send-keys -X begin-selection - bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle - bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel - - bind '"' split-window -v -c "#{pane_current_path}" - bind % split-window -v -c "#{pane_current_path}" - - unbind C-b - set -g prefix C-Space - bind C-Space send-prefix - - bind -n M-H previous-window - bind -n M-L next-window - ''; - }; -} diff --git a/packages/sys/powermenu.nix b/packages/sys/powermenu.nix new file mode 100644 index 0000000..47a7b78 --- /dev/null +++ b/packages/sys/powermenu.nix @@ -0,0 +1,12 @@ +{writeShellScriptBin, ...}: +writeShellScriptBin "powermenu" '' + chosen=$(printf " Power Off\n Restart\n Suspend\n Lock\n󰍃 Log Out" | anyrun --plugins libstdin.so --show-results-immediately true) + + case "$chosen" in + " Power Off") systemctl poweroff;; + " Restart") systemctl reboot;; + " Lock") swaylock;; + "󰍃 Log Out") hyprctl dispatch exit;; + *) exit 1 ;; + esac +'' diff --git a/packages/sys/rebuild.nix b/packages/sys/rebuild.nix new file mode 100644 index 0000000..33bd5c9 --- /dev/null +++ b/packages/sys/rebuild.nix @@ -0,0 +1,13 @@ +{writeShellScriptBin, ...}: +writeShellScriptBin "rebuild" '' + set -e + pushd ~/nixos/ + alejandra . &>/dev/null + git add . + echo "[REBUILD]: rebuilding nixos" + nh os switch --update + gen=$(nixos-rebuild list-generations | grep current) + git commit -am "$gen" + git push origin main + popd +'' diff --git a/shells/default/default.nix b/shells/default/default.nix new file mode 100644 index 0000000..b34b556 --- /dev/null +++ b/shells/default/default.nix @@ -0,0 +1,14 @@ +{ + mkShell, + pkgs, + ... +}: +mkShell { + packages = with pkgs; [ + nixd + alejandra + stylua + lua-language-server + luajitPackages.lua-lsp + ]; +} diff --git a/systems/x86_64-linux/earth/default.nix b/systems/x86_64-linux/earth/default.nix new file mode 100644 index 0000000..9f892e4 --- /dev/null +++ b/systems/x86_64-linux/earth/default.nix @@ -0,0 +1,92 @@ +{ + pkgs, + lib, + system, + inputs, + config, + ... +}: { + imports = [./hardware-configuration.nix]; + + hardware.audio.enable = true; + hardware.nvidia.enable = true; + + programs.steam.enable = true; + programs.steam.gamescopeSession.enable = true; + programs.gamemode.enable = true; + + ui.fonts.enable = true; + + protocols.wayland.enable = true; + + services.fstrim.enable = true; + services.vpn.enable = true; + services.transmission = { + enable = true; + package = pkgs.transmission_4; + settings = { + download-dir = "/home/zack/dl"; + }; + }; + + # Bootloader. + boot.loader.systemd-boot.enable = lib.mkForce false; + boot.lanzaboote = { + enable = true; + pkiBundle = "/etc/secureboot"; + }; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "earth"; # Define your hostname. + + networking.networkmanager = { + enable = true; + unmanaged = ["enp6s0"]; + # insertNameservers = ["1.1.1.1" "1.0.0.1"]; + }; + # networking.firewall.enable = false; + + boot.kernelPackages = pkgs.linuxPackages_zen; + boot.supportedFilesystems = ["ntfs"]; + + services.dlna.enable = true; + # services.openssh = { + # enable = true; + # PasswordAuthentication = true; + # }; + + environment.systemPackages = [ + pkgs.BeatSaberModManager + pkgs.sbctl + pkgs.vesktop + pkgs.mangohud + pkgs.transmission_4 + inputs.agenix.packages.${system}.agenix + ]; + + programs.zsh.enable = true; + users.users.zack = { + isNormalUser = true; + description = "zack"; + extraGroups = ["networkmanager" "wheel" "docker" "libvirtd" "plugdev"]; + shell = pkgs.zsh; + }; + + snowfallorg.users.zack = { + create = true; + admin = false; + + home = { + enable = true; + config = { + # home-manager.stateVersion = "23.11"; + }; + }; + }; + + catppuccin.enable = true; + programs.virt-manager.enable = true; + + virtualisation.docker.enable = true; + virtualisation.libvirtd.enable = true; +} diff --git a/hosts/earth/hardware-configuration.nix b/systems/x86_64-linux/earth/hardware-configuration.nix similarity index 100% rename from hosts/earth/hardware-configuration.nix rename to systems/x86_64-linux/earth/hardware-configuration.nix diff --git a/hosts/pluto/configuration.nix b/systems/x86_64-linux/pluto/default.nix similarity index 100% rename from hosts/pluto/configuration.nix rename to systems/x86_64-linux/pluto/default.nix diff --git a/hosts/pluto/hardware-configuration.nix b/systems/x86_64-linux/pluto/hardware-configuration.nix similarity index 100% rename from hosts/pluto/hardware-configuration.nix rename to systems/x86_64-linux/pluto/hardware-configuration.nix diff --git a/hosts/pluto/services/cv.nix b/systems/x86_64-linux/pluto/services/cv.nix similarity index 100% rename from hosts/pluto/services/cv.nix rename to systems/x86_64-linux/pluto/services/cv.nix diff --git a/hosts/pluto/services/gitlab.nix b/systems/x86_64-linux/pluto/services/gitlab.nix similarity index 100% rename from hosts/pluto/services/gitlab.nix rename to systems/x86_64-linux/pluto/services/gitlab.nix diff --git a/hosts/pluto/services/grafana.nix b/systems/x86_64-linux/pluto/services/grafana.nix similarity index 100% rename from hosts/pluto/services/grafana.nix rename to systems/x86_64-linux/pluto/services/grafana.nix diff --git a/hosts/pluto/services/mirror.nix b/systems/x86_64-linux/pluto/services/mirror.nix similarity index 100% rename from hosts/pluto/services/mirror.nix rename to systems/x86_64-linux/pluto/services/mirror.nix diff --git a/hosts/pluto/services/nginx.nix b/systems/x86_64-linux/pluto/services/nginx.nix similarity index 100% rename from hosts/pluto/services/nginx.nix rename to systems/x86_64-linux/pluto/services/nginx.nix diff --git a/hosts/pluto/services/pterodactyl.nix b/systems/x86_64-linux/pluto/services/pterodactyl.nix similarity index 100% rename from hosts/pluto/services/pterodactyl.nix rename to systems/x86_64-linux/pluto/services/pterodactyl.nix diff --git a/hosts/pluto/services/searxng.nix b/systems/x86_64-linux/pluto/services/searxng.nix similarity index 100% rename from hosts/pluto/services/searxng.nix rename to systems/x86_64-linux/pluto/services/searxng.nix diff --git a/templates/lib/default.nix b/templates/lib/default.nix new file mode 100644 index 0000000..f9a1360 --- /dev/null +++ b/templates/lib/default.nix @@ -0,0 +1,2 @@ +{lib, ...}: +with lib; rec {}