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 {}