summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-06-23 22:33:44 -0400
committerFreya Murphy <freya@freyacat.org>2025-06-23 22:33:44 -0400
commit328c741b1aac74020412e99e0dca7c728dbc92fa (patch)
tree461f4ebcd3252d542749a34668defd62de356c73
parentremoved unused packages (diff)
downloaddotfiles-nix-328c741b1aac74020412e99e0dca7c728dbc92fa.tar.gz
dotfiles-nix-328c741b1aac74020412e99e0dca7c728dbc92fa.tar.bz2
dotfiles-nix-328c741b1aac74020412e99e0dca7c728dbc92fa.zip
refactor
-rw-r--r--home/default.nix120
-rw-r--r--home/git.nix (renamed from programs/git/default.nix)0
-rw-r--r--home/gpg.nix (renamed from programs/gpg/default.nix)10
-rw-r--r--home/neovim/config.nix (renamed from programs/neovim/config.nix)0
-rw-r--r--home/neovim/default.nix (renamed from programs/neovim/default.nix)0
-rw-r--r--home/neovim/init.lua (renamed from programs/neovim/init.lua)0
-rw-r--r--home/ssh/config (renamed from programs/ssh/config)0
-rw-r--r--home/ssh/default.nix13
-rw-r--r--home/starship.nix (renamed from programs/starship/default.nix)0
-rw-r--r--home/tmux/default.nix (renamed from programs/tmux/default.nix)0
-rw-r--r--home/tmux/tmux.conf (renamed from programs/tmux/tmux.conf)0
-rwxr-xr-xhome/tmux/tmux_window (renamed from programs/tmux/tmux_window)0
-rw-r--r--home/zsh/default.nix (renamed from programs/zsh/default.nix)0
-rw-r--r--home/zsh/zprofile (renamed from programs/zsh/zprofile)0
-rw-r--r--home/zsh/zshrc (renamed from programs/zsh/zshrc)0
-rw-r--r--hosts/shinji/default.nix1
-rw-r--r--hosts/thinkpad/default.nix20
-rw-r--r--modules/default.nix9
-rw-r--r--modules/desktop/astal.nix24
-rw-r--r--modules/desktop/default.nix106
-rw-r--r--modules/desktop/firefox/default.nix39
-rw-r--r--modules/desktop/firefox/extraPrefs.nix (renamed from programs/firefox/extraPrefs.nix)0
-rw-r--r--modules/desktop/firefox/policy.nix (renamed from programs/firefox/policy.nix)0
-rw-r--r--modules/desktop/firefox/policyExtensions.nix (renamed from programs/firefox/policyExtensions.nix)0
-rw-r--r--modules/desktop/firefox/policyPrefs.nix (renamed from programs/firefox/policyPrefs.nix)0
-rw-r--r--modules/desktop/firefox/userChrome.nix (renamed from programs/firefox/userChrome.nix)0
-rw-r--r--modules/desktop/hypridle.nix45
-rw-r--r--modules/desktop/hyprland.nix353
-rw-r--r--modules/desktop/hyprlock.nix87
-rw-r--r--modules/desktop/hyprpaper.nix22
-rw-r--r--modules/desktop/mako.nix35
-rw-r--r--modules/desktop/waybar/default.nix87
-rw-r--r--modules/desktop/waybar/style.nix (renamed from programs/waybar/style.nix)0
-rw-r--r--modules/desktop/wofi/default.nix29
-rw-r--r--modules/desktop/wofi/style.nix (renamed from programs/wofi/style.nix)0
-rw-r--r--modules/development/default.nix49
-rw-r--r--modules/gaming/default.nix19
-rw-r--r--modules/gaming/homestuck.nix19
-rw-r--r--modules/gaming/minecraft.nix17
-rw-r--r--modules/gaming/steam.nix34
-rw-r--r--modules/terminal/default.nix15
-rw-r--r--modules/terminal/kitty.nix84
-rw-r--r--modules/virt/default.nix19
-rw-r--r--modules/virt/docker.nix15
-rw-r--r--modules/virt/qemu.nix20
-rw-r--r--programs/astal/default.nix19
-rw-r--r--programs/default.nix21
-rw-r--r--programs/firefox/default.nix36
-rw-r--r--programs/hypr/default.nix8
-rw-r--r--programs/hypr/hypridle.nix40
-rw-r--r--programs/hypr/hyprland.nix348
-rw-r--r--programs/hypr/hyprlock.nix82
-rw-r--r--programs/hypr/hyprpaper.nix17
-rw-r--r--programs/kitty/default.nix79
-rw-r--r--programs/mako/default.nix30
-rw-r--r--programs/steam/default.nix25
-rw-r--r--programs/talc/default.nix15
-rw-r--r--programs/unofficial-homestuck-collection/default.nix15
-rw-r--r--programs/waybar/default.nix82
-rw-r--r--programs/wofi/default.nix24
-rw-r--r--system/default.nix69
-rw-r--r--system/hardware.nix9
-rw-r--r--system/sshd.nix (renamed from programs/ssh/default.nix)16
63 files changed, 1226 insertions, 1000 deletions
diff --git a/home/default.nix b/home/default.nix
index 8561236..4cdc894 100644
--- a/home/default.nix
+++ b/home/default.nix
@@ -1,11 +1,22 @@
{
+ lib,
config,
pkgs,
inputs,
...
-}: {
+}: let
+ inherit (lib) optionals;
+ system = pkgs.stdenv.hostPlatform.system;
+in {
imports = [
inputs.home-manager.nixosModules.home-manager
+ ./neovim
+ ./ssh
+ ./tmux
+ ./zsh
+ ./git.nix
+ ./gpg.nix
+ ./starship.nix
];
home-manager.users.${config.user} = {
@@ -15,76 +26,43 @@
news.display = "silent";
fonts.fontconfig.enable = true;
- home.packages = with pkgs; [
- # nix
- home-manager
- # c / c++
- clang-tools
- gcc
- gdb
- gnumake
- nasm
- pkg-config
- # rust
- rustc
- rustfmt
- rust-analyzer
- cargo
- clippy
- # zig
- zig
- zls
- # java/kotlin
- gradle
- jdk
- jdt-language-server
- kotlin
- kotlin-language-server
- maven
- # gtk
- adwaita-icon-theme
- orchis-theme
- # media
- ffmpeg
- libaacs
- libavif
- libbluray
- libjxl
- # wayland
- cage
- grimblast
- wl-clipboard
- wl-clip-persist
- wl-mirror
- # gaming
- prismlauncher
- # social
- discord
- element-desktop
- gajim
- # programs
- blueman
- brightnessctl
- easyeffects
- fd
- filezilla
- gimp
- imagemagick
- imv
- jq
- libnotify
- mpv
- pavucontrol
- pfetch-rs
- rsync
- sassc
- sl
- starship
- thunderbird-latest
- vlc
- yt-dlp
- zathura
- ];
+ home.packages =
+ (with pkgs; [
+ # nix
+ home-manager
+ # programs
+ fd
+ imagemagick
+ jq
+ pfetch-rs
+ rsync
+ sassc
+ sl
+ starship
+ yt-dlp
+ ])
+ ++ [
+ inputs.talc.packages.${system}.talc
+ ]
+ ++ (with pkgs;
+ optionals config.desktop.enable [
+ # social
+ discord
+ element-desktop
+ gajim
+ thunderbird-latest
+ # programs
+ blueman
+ brightnessctl
+ easyeffects
+ filezilla
+ gimp
+ imv
+ mpv
+ pavucontrol
+ vlc
+ zathura
+ ]);
xdg.configFile = {
"aacs/keydb.cfg" = {
diff --git a/programs/git/default.nix b/home/git.nix
index 5c6a73a..5c6a73a 100644
--- a/programs/git/default.nix
+++ b/home/git.nix
diff --git a/programs/gpg/default.nix b/home/gpg.nix
index 1aa145a..a2deed2 100644
--- a/programs/gpg/default.nix
+++ b/home/gpg.nix
@@ -4,7 +4,7 @@
pkgs,
...
}: let
- keysDir = ../../files/keys;
+ keysDir = ../files/keys;
keys = lib.attrsets.mapAttrsToList (name: type: "${keysDir}/${name}") (builtins.readDir keysDir);
gpgKeys = builtins.filter (path: lib.strings.hasSuffix "asc" path) keys;
in {
@@ -28,12 +28,4 @@ in {
pinentry.package = pkgs.pinentry-curses;
};
};
-
- # yubikey support
- services = {
- pcscd.enable = true;
- udev.packages = with pkgs; [
- yubikey-personalization
- ];
- };
}
diff --git a/programs/neovim/config.nix b/home/neovim/config.nix
index ae10243..ae10243 100644
--- a/programs/neovim/config.nix
+++ b/home/neovim/config.nix
diff --git a/programs/neovim/default.nix b/home/neovim/default.nix
index c1ed000..c1ed000 100644
--- a/programs/neovim/default.nix
+++ b/home/neovim/default.nix
diff --git a/programs/neovim/init.lua b/home/neovim/init.lua
index 2be7fee..2be7fee 100644
--- a/programs/neovim/init.lua
+++ b/home/neovim/init.lua
diff --git a/programs/ssh/config b/home/ssh/config
index 5ae97b6..5ae97b6 100644
--- a/programs/ssh/config
+++ b/home/ssh/config
diff --git a/home/ssh/default.nix b/home/ssh/default.nix
new file mode 100644
index 0000000..b34e23f
--- /dev/null
+++ b/home/ssh/default.nix
@@ -0,0 +1,13 @@
+{
+ config,
+ lib,
+ ...
+}: {
+ # ssh config
+ home-manager.users.${config.user} = {
+ programs.ssh = {
+ enable = true;
+ extraConfig = lib.fileContents ./config;
+ };
+ };
+}
diff --git a/programs/starship/default.nix b/home/starship.nix
index 74fd28a..74fd28a 100644
--- a/programs/starship/default.nix
+++ b/home/starship.nix
diff --git a/programs/tmux/default.nix b/home/tmux/default.nix
index c7ce7db..c7ce7db 100644
--- a/programs/tmux/default.nix
+++ b/home/tmux/default.nix
diff --git a/programs/tmux/tmux.conf b/home/tmux/tmux.conf
index 31ac742..31ac742 100644
--- a/programs/tmux/tmux.conf
+++ b/home/tmux/tmux.conf
diff --git a/programs/tmux/tmux_window b/home/tmux/tmux_window
index 1cdacf0..1cdacf0 100755
--- a/programs/tmux/tmux_window
+++ b/home/tmux/tmux_window
diff --git a/programs/zsh/default.nix b/home/zsh/default.nix
index ce1820e..ce1820e 100644
--- a/programs/zsh/default.nix
+++ b/home/zsh/default.nix
diff --git a/programs/zsh/zprofile b/home/zsh/zprofile
index 4815b36..4815b36 100644
--- a/programs/zsh/zprofile
+++ b/home/zsh/zprofile
diff --git a/programs/zsh/zshrc b/home/zsh/zshrc
index b1c61a2..b1c61a2 100644
--- a/programs/zsh/zshrc
+++ b/home/zsh/zshrc
diff --git a/hosts/shinji/default.nix b/hosts/shinji/default.nix
index 9190dc5..92312b8 100644
--- a/hosts/shinji/default.nix
+++ b/hosts/shinji/default.nix
@@ -49,7 +49,6 @@ inputs.nixpkgs.lib.nixosSystem rec {
foliate
jami
qbittorrent
- qemu
];
}
];
diff --git a/hosts/thinkpad/default.nix b/hosts/thinkpad/default.nix
index 6c7a15e..e71a441 100644
--- a/hosts/thinkpad/default.nix
+++ b/hosts/thinkpad/default.nix
@@ -12,7 +12,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
options
../../config
../../home
- ../../programs
+ ../../modules
../../system
{
imports = [
@@ -27,6 +27,24 @@ inputs.nixpkgs.lib.nixosSystem rec {
scale = 1.0;
}
];
+
+ # modules
+ desktop = {
+ enable = true;
+ astal = true;
+ firefox = true;
+ hyprland = true;
+ hyprlock = true;
+ hypridle = true;
+ hyprpaper = true;
+ };
+ gaming = {
+ homestuck = true;
+ minecraft = true;
+ };
+ terminal = {
+ kitty = true;
+ };
}
];
}
diff --git a/modules/default.nix b/modules/default.nix
new file mode 100644
index 0000000..f478f50
--- /dev/null
+++ b/modules/default.nix
@@ -0,0 +1,9 @@
+{...}: {
+ imports = [
+ ./desktop
+ ./development
+ ./gaming
+ ./terminal
+ ./virt
+ ];
+}
diff --git a/modules/desktop/astal.nix b/modules/desktop/astal.nix
new file mode 100644
index 0000000..2f7f0f3
--- /dev/null
+++ b/modules/desktop/astal.nix
@@ -0,0 +1,24 @@
+{
+ lib,
+ config,
+ pkgs,
+ inputs,
+ ...
+}: let
+ system = pkgs.stdenv.hostPlatform.system;
+ astal = inputs.self.packages.${system};
+
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.astal {
+ default.appLauncher = lib.mkDefault "astal-launcher";
+
+ home-manager.users.${config.user} = {
+ home.packages = [
+ astal.astal.shell
+ astal.astal.launcher
+ ];
+ };
+ };
+}
diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix
new file mode 100644
index 0000000..a11842c
--- /dev/null
+++ b/modules/desktop/default.nix
@@ -0,0 +1,106 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkEnableOption mkIf optionals;
+ cfg = config.desktop;
+in {
+ imports = [
+ ./firefox
+ ./waybar
+ ./wofi
+ ./astal.nix
+ ./hypridle.nix
+ ./hyprland.nix
+ ./hyprlock.nix
+ ./hyprpaper.nix
+ ./mako.nix
+ ];
+
+ options.desktop = {
+ enable = mkEnableOption "Enable baseline desktop utils and programs.";
+ astal = mkEnableOption "Enable the astal gtk shell.";
+ firefox = mkEnableOption "Enable the firefox browser.";
+ hypridle = mkEnableOption "Enable the hypridle daemon.";
+ hyprland = mkEnableOption "Install the Hyprland desktop.";
+ hyprlock = mkEnableOption "Enable the hyprlock lockscreen.";
+ hyprpaper = mkEnableOption "Enable the hyprpaper wallpaper daemon.";
+ mako = mkEnableOption "Enable the mako notification daemon.";
+ waybar = mkEnableOption "Enable the waybar bar.";
+ wofi = mkEnableOption "Enable the wofi launcher.";
+ };
+
+ config = mkIf cfg.enable {
+ home-manager.users.${config.user} = {
+ # desktop specific programs
+ home.packages = with pkgs; [
+ # gtk
+ adwaita-icon-theme
+ orchis-theme
+ # media
+ ffmpeg
+ libaacs
+ libavif
+ libbluray
+ libjxl
+ # wayland
+ cage
+ grimblast
+ wl-clipboard
+ wl-clip-persist
+ wl-mirror
+ # xdg
+ libnotify
+ ];
+
+ # desktop only fonts
+ fonts.packages =
+ (with pkgs; [
+ corefonts
+ dejavu_fonts
+ fira-code
+ fira-code-symbols
+ jetbrains-mono
+ material-icons
+ nerd-fonts.fira-code
+ noto-fonts
+ noto-fonts-cjk-sans
+ noto-fonts-emoji
+ twemoji-color-font
+ vistafonts
+ ])
+ ++ (with inputs.apple-fonts.packages.${pkgs.system}; [
+ sf-pro
+ sf-mono
+ sf-compact
+ ]);
+
+ fonts.fontconfig = {
+ enable = true;
+ defaultFonts = {
+ serif = [
+ "Twemoji"
+ "DejaVu Serif"
+ ];
+ sansSerif = [
+ "Twemoji"
+ "DejaVu Sans"
+ ];
+ monospace = [
+ "Fira Code"
+ "FiraCode Nerd Font Mono"
+ "Font Awesome 6 Pro Regular"
+ "Twemoji"
+ "DejaVu Sans Mono"
+ ];
+ emoji = [
+ "Twemoji"
+ "Noto Color Emoji"
+ ];
+ };
+ };
+ };
+ };
+}
diff --git a/modules/desktop/firefox/default.nix b/modules/desktop/firefox/default.nix
new file mode 100644
index 0000000..e7720b2
--- /dev/null
+++ b/modules/desktop/firefox/default.nix
@@ -0,0 +1,39 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ extraPrefs = import ./extraPrefs.nix;
+ userChrome = import ./userChrome.nix;
+ my-firefox = pkgs.firefox.override {
+ extraPrefs = extraPrefs;
+ };
+
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.firefox {
+ default.browser = lib.mkDefault "firefox";
+
+ home-manager.users.${config.user} = {
+ programs.firefox = {
+ enable = true;
+ package = my-firefox;
+
+ # import configuration
+ policies = import ./policy.nix;
+
+ # create profile for me :3
+ profiles.${config.user} = {
+ search = {
+ force = true;
+ default = "ddg";
+ };
+
+ userChrome = userChrome;
+ };
+ };
+ };
+ };
+}
diff --git a/programs/firefox/extraPrefs.nix b/modules/desktop/firefox/extraPrefs.nix
index 74db984..74db984 100644
--- a/programs/firefox/extraPrefs.nix
+++ b/modules/desktop/firefox/extraPrefs.nix
diff --git a/programs/firefox/policy.nix b/modules/desktop/firefox/policy.nix
index e222553..e222553 100644
--- a/programs/firefox/policy.nix
+++ b/modules/desktop/firefox/policy.nix
diff --git a/programs/firefox/policyExtensions.nix b/modules/desktop/firefox/policyExtensions.nix
index 51d7e9d..51d7e9d 100644
--- a/programs/firefox/policyExtensions.nix
+++ b/modules/desktop/firefox/policyExtensions.nix
diff --git a/programs/firefox/policyPrefs.nix b/modules/desktop/firefox/policyPrefs.nix
index 73d2781..73d2781 100644
--- a/programs/firefox/policyPrefs.nix
+++ b/modules/desktop/firefox/policyPrefs.nix
diff --git a/programs/firefox/userChrome.nix b/modules/desktop/firefox/userChrome.nix
index ab93747..ab93747 100644
--- a/programs/firefox/userChrome.nix
+++ b/modules/desktop/firefox/userChrome.nix
diff --git a/modules/desktop/hypridle.nix b/modules/desktop/hypridle.nix
new file mode 100644
index 0000000..01d4996
--- /dev/null
+++ b/modules/desktop/hypridle.nix
@@ -0,0 +1,45 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.hypridle {
+ home-manager.users.${config.user} = {
+ services.hypridle = {
+ enable = true;
+
+ settings = {
+ general = {
+ lock_cmd = "pidof hyprlock || hyprlock";
+ before_sleep_cmd = "loginctl lock-session";
+ after_sleep_cmd = "hyprctl dispatch dpms on";
+ ignore_dbus_inhibit = false;
+ };
+
+ listener = [
+ # dim screen
+ {
+ timeout = 150;
+ on-timeout = "brightnessctl -s set 10";
+ on-resume = "brightnessctl -r";
+ }
+ # lock
+ {
+ timeout = 300;
+ on-timeout = "loginctl lock-session";
+ }
+ # turn off screen
+ {
+ timeout = 350;
+ on-timeout = "hyprctl dispatch dpms off";
+ on-resume = "hyprctl dispatch dpms on";
+ }
+ ];
+ };
+ };
+ };
+ };
+}
diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix
new file mode 100644
index 0000000..10b058d
--- /dev/null
+++ b/modules/desktop/hyprland.nix
@@ -0,0 +1,353 @@
+{
+ config,
+ pkgs,
+ lib,
+ inputs,
+ ...
+}: let
+ system = pkgs.stdenv.hostPlatform.system;
+ hyprland = inputs.hyprland.packages.${system};
+ hyprland-plugins = inputs.hyprland-plugins.packages.${system};
+ hy3 = inputs.hy3.packages.${system};
+
+ fg = "rgb(${config.theme.colors.fg})";
+ bg = "rgb(${config.theme.colors.bg})";
+ primary = "rgb(${config.theme.colors.primary})";
+ inactive = "rgb(${config.theme.colors.surface.bg})";
+
+ debug = false;
+
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.hyprland {
+ environment = {
+ variables = {
+ HYPRLAND_TRACE =
+ if debug
+ then "1"
+ else "0";
+ AQ_TRACE =
+ if debug
+ then "1"
+ else "0";
+
+ XDG_CURRENT_DESKTOP = "Hyprland";
+ XDG_SESSION_TYPE = "wayland";
+ XDG_SESSION_DESKTOP = "Hyprland";
+ LIBSEAT_BACKEND = "logind";
+ };
+ sessionVariables = {
+ XCURSOR_THEME = "Adwaita";
+ XCURSOR_SIZE = "24";
+
+ GTK_THEME = "Orchis-Teal-Dark";
+
+ MOZ_ENABLE_WAYLAND = "1";
+ MOZ_USE_XINPUT = "1";
+ _JAVA_AWT_WM_NONREPARENTING = "1";
+ };
+ };
+
+ xdg.portal = {
+ enable = true;
+ xdgOpenUsePortal = true;
+ config = {
+ common.default = ["gtk"];
+ hyprland.default = ["gtk" "hyprland"];
+ };
+ extraPortals = [
+ pkgs.xdg-desktop-portal-gtk
+ pkgs.xdg-desktop-portal-wlr
+ hyprland.xdg-desktop-portal-hyprland
+ ];
+ };
+
+ programs.xwayland.enable = true;
+
+ home-manager.users.${config.user} = {
+ wayland.windowManager.hyprland = {
+ enable = true;
+ package = hyprland.hyprland;
+
+ xwayland.enable = true;
+ systemd.enable = true;
+
+ # Plugins
+ plugins = [
+ hyprland-plugins.hyprexpo
+ hy3.hy3
+ ];
+
+ # Config
+ settings = {
+ # Debug
+ debug.disable_logs = ! debug;
+ debug.disable_time = ! debug;
+ debug.enable_stdout_logs = debug;
+
+ # Monitors
+ monitor =
+ map (
+ monitor: "${monitor.name}, highres, auto, ${toString monitor.scale}, bitdepth, ${toString monitor.bitdepth}"
+ )
+ config.monitors;
+
+ # Autostart
+ exec-once = config.autoRun;
+
+ # General
+ general = {
+ gaps_in = config.theme.innerGap;
+ gaps_out = config.theme.outerGap;
+ layout = "hy3";
+ resize_on_border = "yes";
+ extend_border_grab_area = 20;
+ border_size = config.theme.borderWidth;
+ "col.active_border" = "${primary}";
+ "col.inactive_border" = "${inactive}";
+ };
+
+ # Gestures
+ gestures = {
+ workspace_swipe = true;
+ workspace_swipe_fingers = 3;
+ workspace_swipe_forever = true;
+ workspace_swipe_cancel_ratio = 0.15;
+ };
+
+ # Decoration
+ decoration = {
+ rounding = config.theme.outerRadius;
+ shadow.enabled = false;
+ blur = {
+ enabled = config.theme.blur;
+ size = 4;
+ passes = 2;
+ noise = 0.008;
+ contrast = 0.8916;
+ brightness = 0.8;
+ };
+ };
+
+ # Animations
+ animations = {
+ enabled = true;
+
+ bezier = [
+ "windowIn, 0.06, 0.71, 0.25, 1"
+ "windowResize, 0.04, 0.67, 0.38, 1"
+ ];
+
+ animation = [
+ "windowsIn, 1, 3, windowIn, slide #popin 20%"
+ "windowsOut, 1, 3, windowIn, slide #popin 70%"
+ "windowsMove, 1, 2.5, windowResize"
+ "border, 1, 10, default"
+ "borderangle, 1, 8, default"
+ "fade, 1, 3, default"
+ "workspaces, 1, 6, default"
+ "layers, 1, 5, windowIn, slide"
+ ];
+ };
+
+ # Input
+ input = {
+ kb_layout = "us";
+ kb_variant = "";
+ kb_model = "";
+ kb_options = "gtp:alt_shift_toggle, compose:ralt";
+ kb_rules = "";
+ follow_mouse = 1;
+ touchpad = {
+ natural_scroll = "yes";
+ };
+ sensitivity = 0;
+ };
+
+ # Keybinds
+ "$mod" = "SUPER";
+ bind = [
+ # Launch programs
+
+ "$mod, W, exec, ${config.default.browser}"
+ "$mod, D, exec, ${config.default.appLauncher}"
+ "$mod, L, exec, ${config.default.lockScreen}"
+ "$mod, Return, exec, ${config.default.terminal}"
+ ", Print, exec, grimblast copy area"
+
+ # Misc
+
+ "$mod SHIFT, L, exit"
+ "$mod, tab, hyprexpo:expo, toggle"
+
+ # Window operations
+
+ "$mod SHIFT, Q, killactive"
+ "$mod SHIFT, SPACE, togglefloating"
+ "$mod, F, fullscreen"
+ "$mod, J, togglesplit"
+
+ # Move focus with mod + arrow keys
+
+ "$mod, left, movefocus, l"
+ "$mod, right, movefocus, r"
+ "$mod, up, movefocus, u"
+ "$mod, down, movefocus, d"
+
+ # Move window across workspace with mod + arrow keys
+
+ "$mod SHIFT, left, hy3:movewindow, l"
+ "$mod SHIFT, right, hy3:movewindow, r"
+ "$mod SHIFT, up, hy3:movewindow, u"
+ "$mod SHIFT, down, hy3:movewindow, d"
+
+ # Switch workspaces with mod + [0-9]
+
+ "$mod, 1, workspace, 1"
+ "$mod, 2, workspace, 2"
+ "$mod, 3, workspace, 3"
+ "$mod, 4, workspace, 4"
+ "$mod, 5, workspace, 5"
+ "$mod, 6, workspace, 6"
+ "$mod, 7, workspace, 7"
+ "$mod, 8, workspace, 8"
+ "$mod, 9, workspace, 9"
+
+ # Move active window to a workspace with mod + SHIFT + [0-9]
+
+ "$mod SHIFT, 1, movetoworkspacesilent, 1"
+ "$mod SHIFT, 2, movetoworkspacesilent, 2"
+ "$mod SHIFT, 3, movetoworkspacesilent, 3"
+ "$mod SHIFT, 4, movetoworkspacesilent, 4"
+ "$mod SHIFT, 5, movetoworkspacesilent, 5"
+ "$mod SHIFT, 6, movetoworkspacesilent, 6"
+ "$mod SHIFT, 7, movetoworkspacesilent, 7"
+ "$mod SHIFT, 8, movetoworkspacesilent, 8"
+ "$mod SHIFT, 9, movetoworkspacesilent, 9"
+ "$mod SHIFT, 0, movetoworkspacesilent, 10"
+
+ # Move to tab
+
+ "LALT, 1, hy3:focustab, index, 01"
+ "LALT, 2, hy3:focustab, index, 02"
+ "LALT, 3, hy3:focustab, index, 03"
+ "LALT, 4, hy3:focustab, index, 04"
+ "LALT, 5, hy3:focustab, index, 05"
+ "LALT, 6, hy3:focustab, index, 06"
+ "LALT, 7, hy3:focustab, index, 07"
+ "LALT, 8, hy3:focustab, index, 08"
+ "LALT, 9, hy3:focustab, index, 09"
+ "LALT, 0, hy3:focustab, index, 10"
+
+ "$mod SHIFT, B, hy3:makegroup, h"
+ "$mod SHIFT, V, hy3:makegroup, v"
+ "$mod SHIFT, C, hy3:changegroup, toggletab"
+
+ # Scroll through existing workspaces with mod + scroll
+
+ "$mod, mouse_down, workspace, e+1"
+ "$mod, mouse_up, workspace, e-1"
+ ];
+
+ bindn = [
+ # Focus windows with scroll wheel or middle click
+
+ ", mouse:272, hy3:focustab, mouse"
+ ", mouse_down, hy3:focustab, l, require_hovered"
+ ", mouse_up, hy3:focustab, r, require_hovered"
+ ];
+
+ bindm = [
+ # Move/resize windows with mod + LMB/RMB and dragging
+
+ "$mod, mouse:272, movewindow"
+ "$mod, mouse:273, resizewindow"
+ ];
+
+ binde = [
+ # Audio
+
+ # raise volume
+ ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
+ # lower volume
+ ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
+ # mute speaker
+ ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
+ # mute mic
+ ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
+
+ # Media
+
+ # play
+ ", XF86AudioPlay, exec, playerctl play-pause"
+ # next
+ ", XF86AudioNext, exec, playerctl next"
+ # prev
+ ", XF86AudioPrev, exec, playerctl previous"
+
+ # Backlight
+
+ ", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
+ ", XF86MonBrightnessUp, exec, brightnessctl set 5%+"
+ ];
+
+ # Plugin configuration
+ plugin = {
+ # hy3
+ hy3 = {
+ tabs = {
+ height = 24;
+ text_height = 9;
+ text_padding = 10;
+ padding = 2;
+ render_text = true;
+ text_font = "monospace";
+ radius = config.theme.outerRadius;
+ border_width = config.theme.borderWidth;
+
+ "col.active" = "${bg}";
+ "col.active.border" = "${inactive}";
+ "col.active.text" = "${fg}";
+ "col.inactive" = "${bg}";
+ "col.inactive.border" = "${inactive}";
+ "col.inactive.text" = "${fg}";
+ };
+
+ autotile = {
+ enable = true;
+ };
+ };
+ };
+
+ # XWayland
+ xwayland = {
+ force_zero_scaling = "true";
+ use_nearest_neighbor = "false";
+ };
+
+ # Misc
+ misc = {
+ disable_hyprland_logo = true;
+ disable_splash_rendering = true;
+ key_press_enables_dpms = true;
+ mouse_move_enables_dpms = true;
+ enable_anr_dialog = false;
+ vrr = 1;
+ };
+
+ # Ecosystem
+ ecosystem = {
+ no_update_news = true;
+ no_donation_nag = true;
+ };
+
+ # Experimental
+ experimental = {
+ xx_color_management_v4 = true;
+ };
+ }; # end settings
+ }; # end hyprland
+ }; # end home-manager
+ };
+}
diff --git a/modules/desktop/hyprlock.nix b/modules/desktop/hyprlock.nix
new file mode 100644
index 0000000..9237be5
--- /dev/null
+++ b/modules/desktop/hyprlock.nix
@@ -0,0 +1,87 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ fg = "rgb(${config.theme.colors.fg})";
+ bg = "rgb(${config.theme.colors.bg})";
+ error = "rgb(${config.theme.colors.error})";
+ trans = "rgba(0,0,0,0)";
+
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.hyprlock {
+ default.lockScreen = lib.mkDefault "hyprlock";
+
+ home-manager.users.${config.user} = {
+ programs.hyprlock = {
+ enable = true;
+
+ settings = {
+ background = {
+ path = config.theme.lockscreen;
+ color = bg;
+ blur_passes = 0;
+ blur_size = 2;
+ noise = 0;
+ contrast = 0;
+ brightness = 0;
+ vibrancy = 0;
+ vibrancy_darkness = 0.0;
+ };
+
+ # Password Input
+ input-field = {
+ size = "300, 30";
+ outline_thickness = 0;
+ dots_size = 0.25;
+ dots_spacing = 0.55;
+ dots_center = true;
+ dots_rounding = -1;
+ outer_color = trans;
+ inner_color = trans;
+ font_color = fg;
+ fade_on_empty = false;
+ placeholder_text = "Enter Password";
+ hide_input = false;
+ check_color = error;
+ fail_color = error;
+ capslock_color = -1;
+ numlock_color = -1;
+ bothlock_color = -1;
+ invert_numlock = false;
+ swap_font_color = false;
+ font_family = config.theme.font.regular;
+ position = "0, 50";
+ halign = "center";
+ valign = "bottom";
+ };
+
+ label = [
+ # Date
+ {
+ text = "cmd[update:1000] echo \"$(date +\"%A, %B %d\")\"";
+ color = fg;
+ font_size = 20;
+ font_family = config.theme.font.header;
+ position = "0, -100";
+ halign = "center";
+ valign = "top";
+ }
+ # Clock
+ {
+ text = "cmd[update:1000] echo \"$(date +\"%k:%M:%S\")\"";
+ color = fg;
+ font_size = 90;
+ font_family = config.theme.font.header;
+ position = "0, -130";
+ halign = "center";
+ valign = "top";
+ }
+ ];
+ };
+ };
+ };
+ };
+}
diff --git a/modules/desktop/hyprpaper.nix b/modules/desktop/hyprpaper.nix
new file mode 100644
index 0000000..045ae62
--- /dev/null
+++ b/modules/desktop/hyprpaper.nix
@@ -0,0 +1,22 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.hyprpaper {
+ home-manager.users.${config.user} = {
+ services.hyprpaper = {
+ enable = true;
+
+ settings = {
+ preload = config.theme.wallpaper;
+ wallpaper = ",${config.theme.wallpaper}";
+ splash = false;
+ };
+ };
+ };
+ };
+}
diff --git a/modules/desktop/mako.nix b/modules/desktop/mako.nix
new file mode 100644
index 0000000..17ed94f
--- /dev/null
+++ b/modules/desktop/mako.nix
@@ -0,0 +1,35 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.mako {
+ home-manager.users.${config.user} = {
+ services.mako = {
+ enable = false; # now using astal
+
+ settings = {
+ font = "${config.theme.font.monospace} 11";
+
+ margin = toString config.theme.outerGap;
+ padding = toString config.theme.innerGap;
+
+ background-color = "#${config.theme.colors.bg}";
+ progress-color = "#${config.theme.colors.primary}";
+ text-color = "#${config.theme.colors.fg}";
+
+ border-color = "#${config.theme.colors.fg}";
+ border-size = config.theme.borderWidth;
+ border-radius = config.theme.outerRadius;
+
+ default-timeout = 5000;
+ layer = "overlay";
+ icons = true;
+ };
+ };
+ };
+ };
+}
diff --git a/modules/desktop/waybar/default.nix b/modules/desktop/waybar/default.nix
new file mode 100644
index 0000000..c2d6927
--- /dev/null
+++ b/modules/desktop/waybar/default.nix
@@ -0,0 +1,87 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.waybar {
+ home-manager.users.${config.user} = {
+ programs.waybar = {
+ enable = false; # using astal now
+
+ settings = [
+ {
+ height = 24;
+ layer = "top";
+ position = "top";
+ spacing = 4;
+
+ modules-left = [
+ "hyprland/workspaces"
+ ];
+ modules-center = [
+ "clock"
+ ];
+ modules-right = [
+ "battery"
+ "wireplumber"
+ "network"
+ "tray"
+ ];
+
+ "hyprland/workspaces" = {
+ disable-scroll = true;
+ all-outputs = true;
+ format = "{name}";
+ };
+
+ battery = {
+ interval = 1;
+ states = {
+ warning = 30;
+ critical = 15;
+ };
+ format = " {capacity}%";
+ format-charging = " {capacity}%";
+ format-plugged = " {capacity}%";
+ format-full = " {capacity}%";
+ format-warning = " {capacity}%";
+ format-critical = " {capacity}%";
+ };
+
+ wireplumber = {
+ format = " {volume}%";
+ format-bluetooth = " {volume}%";
+ format-muted = " muted";
+ scroll-step = 1;
+ on-click = "pavucontrol";
+ ignored-sinks = ["Easy Effects Sink"];
+ };
+
+ network = {
+ format = " disconnected";
+ format-wifi = " {essid}";
+ format-ethernet = " {ipaddr}/{cidr}";
+ format-disconnected = " disconnected";
+ max-length = 50;
+ on-click = "nm-connection-editor";
+ };
+
+ clock = {
+ interval = 1;
+ format = "{:%Y-%m-%d %a %H:%M:%S}";
+ };
+
+ tray = {
+ spacing = config.theme.outerGap;
+ };
+ }
+ ];
+
+ style = import ./style.nix {theme = config.theme;};
+ };
+ };
+ };
+}
diff --git a/programs/waybar/style.nix b/modules/desktop/waybar/style.nix
index 33db673..33db673 100644
--- a/programs/waybar/style.nix
+++ b/modules/desktop/waybar/style.nix
diff --git a/modules/desktop/wofi/default.nix b/modules/desktop/wofi/default.nix
new file mode 100644
index 0000000..aa04495
--- /dev/null
+++ b/modules/desktop/wofi/default.nix
@@ -0,0 +1,29 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.desktop;
+in {
+ config = mkIf cfg.wofi {
+ default.appLauncher = lib.mkDefault "wofi --show drun --prompt 'Seach Programs'";
+
+ home-manager.users.${config.user} = {
+ programs.wofi = {
+ enable = true;
+
+ settings = {
+ key_expand = "Tab";
+ term = "kitty";
+ matching = "multi-contains";
+ insensitive = true;
+ gtk_dark = true;
+ hide_scroll = true;
+ };
+
+ style = import ./style.nix {theme = config.theme;};
+ };
+ };
+ };
+}
diff --git a/programs/wofi/style.nix b/modules/desktop/wofi/style.nix
index 27b7205..27b7205 100644
--- a/programs/wofi/style.nix
+++ b/modules/desktop/wofi/style.nix
diff --git a/modules/development/default.nix b/modules/development/default.nix
new file mode 100644
index 0000000..486a220
--- /dev/null
+++ b/modules/development/default.nix
@@ -0,0 +1,49 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkEnableOption optionals;
+ cfg = config.development;
+in {
+ options.development = {
+ c = mkEnableOption "Enable c/c++ development tools.";
+ java = mkEnableOption "Enable java/kotlin development tools.";
+ rust = mkEnableOption "Enable rust development tools.";
+ zig = mkEnableOption "Enable zig development tools.";
+ };
+
+ config = {
+ home-manager.users.${config.user} = {
+ home.packages = with pkgs;
+ (optionals cfg.c [
+ clang-tools
+ gcc
+ gdb
+ gnumake
+ nasm
+ pkg-config
+ ])
+ ++ (optionals cfg.rust [
+ rustc
+ rustfmt
+ rust-analyzer
+ cargo
+ clippy
+ ])
+ ++ (optionals cfg.java [
+ gradle
+ jdk
+ jdt-language-server
+ kotlin
+ kotlin-language-server
+ maven
+ ])
+ ++ (optionals cfg.zig [
+ zig
+ zls
+ ]);
+ };
+ };
+}
diff --git a/modules/gaming/default.nix b/modules/gaming/default.nix
new file mode 100644
index 0000000..a0c826c
--- /dev/null
+++ b/modules/gaming/default.nix
@@ -0,0 +1,19 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ inherit (lib) mkEnableOption;
+in {
+ imports = [
+ ./homestuck.nix
+ ./minecraft.nix
+ ./steam.nix
+ ];
+
+ options.gaming = {
+ homestuck = mkEnableOption "Install the unofficial homestuck collection.";
+ minecraft = mkEnableOption "Install the minecraft block game.";
+ steam = mkEnableOption "Install the steam game launcher.";
+ };
+}
diff --git a/modules/gaming/homestuck.nix b/modules/gaming/homestuck.nix
new file mode 100644
index 0000000..12641a4
--- /dev/null
+++ b/modules/gaming/homestuck.nix
@@ -0,0 +1,19 @@
+{
+ lib,
+ config,
+ pkgs,
+ inputs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.gaming;
+ system = pkgs.stdenv.hostPlatform.system;
+in {
+ config = mkIf cfg.homestuck {
+ home-manager.users.${config.user} = {
+ home.packages = [
+ inputs.self.packages.${system}.unofficial-homestuck-collection
+ ];
+ };
+ };
+}
diff --git a/modules/gaming/minecraft.nix b/modules/gaming/minecraft.nix
new file mode 100644
index 0000000..5de20e6
--- /dev/null
+++ b/modules/gaming/minecraft.nix
@@ -0,0 +1,17 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.gaming;
+in {
+ config = mkIf cfg.minecraft {
+ home-manager.users.${config.user} = {
+ home.packages = with pkgs; [
+ prismlauncher
+ ];
+ };
+ };
+}
diff --git a/modules/gaming/steam.nix b/modules/gaming/steam.nix
new file mode 100644
index 0000000..53ab252
--- /dev/null
+++ b/modules/gaming/steam.nix
@@ -0,0 +1,34 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.gaming;
+in {
+ config = mkIf cfg.steam {
+ nixpkgs.config.allowUnfreePredicate = pkg:
+ builtins.elem (lib.getName pkg) [
+ "steam"
+ "steam-original"
+ "steam-runtime"
+ ];
+
+ programs.gamescope = {
+ enable = true;
+ capSysNice = true;
+ };
+
+ programs.steam = {
+ enable = true;
+ remotePlay.openFirewall = true;
+ dedicatedServer.openFirewall = true;
+ localNetworkGameTransfers.openFirewall = true;
+ gamescopeSession.enable = true;
+ };
+
+ # controllers
+ hardware.xone.enable = true;
+ hardware.steam-hardware.enable = true;
+ };
+}
diff --git a/modules/terminal/default.nix b/modules/terminal/default.nix
new file mode 100644
index 0000000..8e9d5f8
--- /dev/null
+++ b/modules/terminal/default.nix
@@ -0,0 +1,15 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ inherit (lib) mkEnableOption;
+in {
+ imports = [
+ ./kitty.nix
+ ];
+
+ options.terminal = {
+ kitty = mkEnableOption "Enable the kitty terminal.";
+ };
+}
diff --git a/modules/terminal/kitty.nix b/modules/terminal/kitty.nix
new file mode 100644
index 0000000..88aa151
--- /dev/null
+++ b/modules/terminal/kitty.nix
@@ -0,0 +1,84 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.terminal;
+in {
+ config = mkIf cfg.kitty {
+ default.terminal = lib.mkDefault "kitty";
+
+ home-manager.users.${config.user} = {
+ programs.kitty = {
+ enable = true;
+ environment = {};
+ extraConfig = "";
+
+ settings = {
+ # Font
+ font_family = config.theme.font.monospace;
+ font_size = 11;
+ bold_font = "auto";
+ italic_font = "auto";
+ bold_italic_font = "auto";
+
+ # Scrollback
+ scrollback_lines = 10000;
+ scrollback_pager_history_size = 300; # MB
+
+ # Urls
+ detect_urls = true;
+ show_hyperlink_targets = false;
+
+ # Window
+ window_padding_width = config.theme.outerGap;
+ window_border_width = 0;
+ draw_minimal_borders = true;
+ background_opacity = config.theme.opacity;
+
+ # Disable audio
+ enable_audio_bell = false;
+
+ # Disable close prompt
+ confirm_os_window_close = 0;
+
+ # colors
+ background = "#${config.theme.colors.bg}";
+ foreground = "#${config.theme.colors.fg}";
+ selection_background = "#${config.theme.colors.surface.bg}";
+ selection_foreground = "#${config.theme.colors.surface.fg}";
+ url_color = "#${config.theme.colors.bright.yellow}";
+ cursor = "#${config.theme.colors.fg}";
+ active_border_color = "#${config.theme.colors.primary}";
+ inactive_border_color = "#${config.theme.colors.bg}";
+ active_tab_background = "#${config.theme.colors.bg}";
+ active_tab_foreground = "#${config.theme.colors.fg}";
+ inactive_tab_background = "#${config.theme.colors.bg}";
+ inactive_tab_foreground = "#${config.theme.colors.fg}";
+ tab_bar_background = "#${config.theme.colors.bg}";
+
+ # normal
+ color0 = "#${config.theme.colors.normal.black}";
+ color1 = "#${config.theme.colors.normal.red}";
+ color2 = "#${config.theme.colors.normal.green}";
+ color3 = "#${config.theme.colors.normal.yellow}";
+ color4 = "#${config.theme.colors.normal.blue}";
+ color5 = "#${config.theme.colors.normal.magenta}";
+ color6 = "#${config.theme.colors.normal.cyan}";
+ color7 = "#${config.theme.colors.normal.white}";
+
+ # bright
+ color8 = "#${config.theme.colors.bright.black}";
+ color9 = "#${config.theme.colors.bright.red}";
+ color10 = "#${config.theme.colors.bright.green}";
+ color11 = "#${config.theme.colors.bright.yellow}";
+ color12 = "#${config.theme.colors.bright.blue}";
+ color13 = "#${config.theme.colors.bright.magenta}";
+ color14 = "#${config.theme.colors.bright.cyan}";
+ color15 = "#${config.theme.colors.bright.white}";
+ };
+ };
+ };
+ };
+}
diff --git a/modules/virt/default.nix b/modules/virt/default.nix
new file mode 100644
index 0000000..c5d3960
--- /dev/null
+++ b/modules/virt/default.nix
@@ -0,0 +1,19 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkEnableOption;
+ cfg = config.virt;
+in {
+ imports = [
+ ./docker.nix
+ ./qemu.nix
+ ];
+
+ options.virt = {
+ docker = mkEnableOption "Install docker and its components.";
+ qemu = mkEnableOption "Install qemu and its components.";
+ };
+}
diff --git a/modules/virt/docker.nix b/modules/virt/docker.nix
new file mode 100644
index 0000000..5930858
--- /dev/null
+++ b/modules/virt/docker.nix
@@ -0,0 +1,15 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.virt;
+in {
+ config = mkIf cfg.docker {
+ virtualisation.docker.enable = true;
+ virtualisation.docker.storageDriver = "btrfs";
+ users.groups.docker.members = [config.user];
+ };
+}
diff --git a/modules/virt/qemu.nix b/modules/virt/qemu.nix
new file mode 100644
index 0000000..f5d9d24
--- /dev/null
+++ b/modules/virt/qemu.nix
@@ -0,0 +1,20 @@
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (lib) mkIf;
+ cfg = config.virt;
+in {
+ config = mkIf cfg.qemu {
+ programs.virt-manager.enable = true;
+ users.groups.libvirtd.members = [config.user];
+ virtualisation.libvirtd.enable = true;
+ virtualisation.spiceUSBRedirection.enable = true;
+
+ environment.systemPackages = with pkgs; [
+ qemu
+ ];
+ };
+}
diff --git a/programs/astal/default.nix b/programs/astal/default.nix
deleted file mode 100644
index 1b43dbe..0000000
--- a/programs/astal/default.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- lib,
- config,
- pkgs,
- inputs,
- ...
-}: let
- system = pkgs.stdenv.hostPlatform.system;
- astal = inputs.self.packages.${system};
-in {
- default.appLauncher = lib.mkDefault "astal-launcher";
-
- home-manager.users.${config.user} = {
- home.packages = [
- astal.astal.shell
- astal.astal.launcher
- ];
- };
-}
diff --git a/programs/default.nix b/programs/default.nix
deleted file mode 100644
index 692113e..0000000
--- a/programs/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{...}: {
- imports = [
- ./astal
- ./firefox
- ./git
- ./gpg
- ./hypr
- ./kitty
- ./mako
- ./neovim
- ./ssh
- ./starship
- ./steam
- ./talc
- ./tmux
- ./unofficial-homestuck-collection
- ./waybar
- ./wofi
- ./zsh
- ];
-}
diff --git a/programs/firefox/default.nix b/programs/firefox/default.nix
deleted file mode 100644
index 58aa83c..0000000
--- a/programs/firefox/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}: let
- extraPrefs = import ./extraPrefs.nix;
-
- userChrome = import ./userChrome.nix;
-
- my-firefox = pkgs.firefox.override {
- extraPrefs = extraPrefs;
- };
-in {
- default.browser = lib.mkDefault "firefox";
-
- home-manager.users.${config.user} = {
- programs.firefox = {
- enable = true;
- package = my-firefox;
-
- # import configuration
- policies = import ./policy.nix;
-
- # create profile for me :3
- profiles.${config.user} = {
- search = {
- force = true;
- default = "ddg";
- };
-
- userChrome = userChrome;
- };
- };
- };
-}
diff --git a/programs/hypr/default.nix b/programs/hypr/default.nix
deleted file mode 100644
index 4a6bd01..0000000
--- a/programs/hypr/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{...}: {
- imports = [
- ./hypridle.nix
- ./hyprland.nix
- ./hyprlock.nix
- ./hyprpaper.nix
- ];
-}
diff --git a/programs/hypr/hypridle.nix b/programs/hypr/hypridle.nix
deleted file mode 100644
index e481e74..0000000
--- a/programs/hypr/hypridle.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- config,
- lib,
- ...
-}: {
- home-manager.users.${config.user} = {
- services.hypridle = {
- enable = true;
-
- settings = {
- general = {
- lock_cmd = "pidof hyprlock || hyprlock";
- before_sleep_cmd = "loginctl lock-session";
- after_sleep_cmd = "hyprctl dispatch dpms on";
- ignore_dbus_inhibit = false;
- };
-
- listener = [
- # dim screen
- {
- timeout = 150;
- on-timeout = "brightnessctl -s set 10";
- on-resume = "brightnessctl -r";
- }
- # lock
- {
- timeout = 300;
- on-timeout = "loginctl lock-session";
- }
- # turn off screen
- {
- timeout = 350;
- on-timeout = "hyprctl dispatch dpms off";
- on-resume = "hyprctl dispatch dpms on";
- }
- ];
- };
- };
- };
-}
diff --git a/programs/hypr/hyprland.nix b/programs/hypr/hyprland.nix
deleted file mode 100644
index a37be7f..0000000
--- a/programs/hypr/hyprland.nix
+++ /dev/null
@@ -1,348 +0,0 @@
-{
- config,
- pkgs,
- lib,
- inputs,
- ...
-}: let
- system = pkgs.stdenv.hostPlatform.system;
- hyprland = inputs.hyprland.packages.${system};
- hyprland-plugins = inputs.hyprland-plugins.packages.${system};
- hy3 = inputs.hy3.packages.${system};
-
- fg = "rgb(${config.theme.colors.fg})";
- bg = "rgb(${config.theme.colors.bg})";
- primary = "rgb(${config.theme.colors.primary})";
- inactive = "rgb(${config.theme.colors.surface.bg})";
-
- debug = false;
-in {
- environment = {
- variables = {
- HYPRLAND_TRACE =
- if debug
- then "1"
- else "0";
- AQ_TRACE =
- if debug
- then "1"
- else "0";
-
- XDG_CURRENT_DESKTOP = "Hyprland";
- XDG_SESSION_TYPE = "wayland";
- XDG_SESSION_DESKTOP = "Hyprland";
- LIBSEAT_BACKEND = "logind";
- };
- sessionVariables = {
- XCURSOR_THEME = "Adwaita";
- XCURSOR_SIZE = "24";
-
- GTK_THEME = "Orchis-Teal-Dark";
-
- MOZ_ENABLE_WAYLAND = "1";
- MOZ_USE_XINPUT = "1";
- _JAVA_AWT_WM_NONREPARENTING = "1";
- };
- };
-
- xdg.portal = {
- enable = true;
- xdgOpenUsePortal = true;
- config = {
- common.default = ["gtk"];
- hyprland.default = ["gtk" "hyprland"];
- };
- extraPortals = [
- pkgs.xdg-desktop-portal-gtk
- pkgs.xdg-desktop-portal-wlr
- hyprland.xdg-desktop-portal-hyprland
- ];
- };
-
- programs.xwayland.enable = true;
-
- home-manager.users.${config.user} = {
- wayland.windowManager.hyprland = {
- enable = true;
- package = hyprland.hyprland;
-
- xwayland.enable = true;
- systemd.enable = true;
-
- # Plugins
- plugins = [
- hyprland-plugins.hyprexpo
- hy3.hy3
- ];
-
- # Config
- settings = {
- # Debug
- debug.disable_logs = ! debug;
- debug.disable_time = ! debug;
- debug.enable_stdout_logs = debug;
-
- # Monitors
- monitor =
- map (
- monitor: "${monitor.name}, highres, auto, ${toString monitor.scale}, bitdepth, ${toString monitor.bitdepth}"
- )
- config.monitors;
-
- # Autostart
- exec-once = config.autoRun;
-
- # General
- general = {
- gaps_in = config.theme.innerGap;
- gaps_out = config.theme.outerGap;
- layout = "hy3";
- resize_on_border = "yes";
- extend_border_grab_area = 20;
- border_size = config.theme.borderWidth;
- "col.active_border" = "${primary}";
- "col.inactive_border" = "${inactive}";
- };
-
- # Gestures
- gestures = {
- workspace_swipe = true;
- workspace_swipe_fingers = 3;
- workspace_swipe_forever = true;
- workspace_swipe_cancel_ratio = 0.15;
- };
-
- # Decoration
- decoration = {
- rounding = config.theme.outerRadius;
- shadow.enabled = false;
- blur = {
- enabled = config.theme.blur;
- size = 4;
- passes = 2;
- noise = 0.008;
- contrast = 0.8916;
- brightness = 0.8;
- };
- };
-
- # Animations
- animations = {
- enabled = true;
-
- bezier = [
- "windowIn, 0.06, 0.71, 0.25, 1"
- "windowResize, 0.04, 0.67, 0.38, 1"
- ];
-
- animation = [
- "windowsIn, 1, 3, windowIn, slide #popin 20%"
- "windowsOut, 1, 3, windowIn, slide #popin 70%"
- "windowsMove, 1, 2.5, windowResize"
- "border, 1, 10, default"
- "borderangle, 1, 8, default"
- "fade, 1, 3, default"
- "workspaces, 1, 6, default"
- "layers, 1, 5, windowIn, slide"
- ];
- };
-
- # Input
- input = {
- kb_layout = "us";
- kb_variant = "";
- kb_model = "";
- kb_options = "gtp:alt_shift_toggle, compose:ralt";
- kb_rules = "";
- follow_mouse = 1;
- touchpad = {
- natural_scroll = "yes";
- };
- sensitivity = 0;
- };
-
- # Keybinds
- "$mod" = "SUPER";
- bind = [
- # Launch programs
-
- "$mod, W, exec, ${config.default.browser}"
- "$mod, D, exec, ${config.default.appLauncher}"
- "$mod, L, exec, ${config.default.lockScreen}"
- "$mod, Return, exec, ${config.default.terminal}"
- ", Print, exec, grimblast copy area"
-
- # Misc
-
- "$mod SHIFT, L, exit"
- "$mod, tab, hyprexpo:expo, toggle"
-
- # Window operations
-
- "$mod SHIFT, Q, killactive"
- "$mod SHIFT, SPACE, togglefloating"
- "$mod, F, fullscreen"
- "$mod, J, togglesplit"
-
- # Move focus with mod + arrow keys
-
- "$mod, left, movefocus, l"
- "$mod, right, movefocus, r"
- "$mod, up, movefocus, u"
- "$mod, down, movefocus, d"
-
- # Move window across workspace with mod + arrow keys
-
- "$mod SHIFT, left, hy3:movewindow, l"
- "$mod SHIFT, right, hy3:movewindow, r"
- "$mod SHIFT, up, hy3:movewindow, u"
- "$mod SHIFT, down, hy3:movewindow, d"
-
- # Switch workspaces with mod + [0-9]
-
- "$mod, 1, workspace, 1"
- "$mod, 2, workspace, 2"
- "$mod, 3, workspace, 3"
- "$mod, 4, workspace, 4"
- "$mod, 5, workspace, 5"
- "$mod, 6, workspace, 6"
- "$mod, 7, workspace, 7"
- "$mod, 8, workspace, 8"
- "$mod, 9, workspace, 9"
-
- # Move active window to a workspace with mod + SHIFT + [0-9]
-
- "$mod SHIFT, 1, movetoworkspacesilent, 1"
- "$mod SHIFT, 2, movetoworkspacesilent, 2"
- "$mod SHIFT, 3, movetoworkspacesilent, 3"
- "$mod SHIFT, 4, movetoworkspacesilent, 4"
- "$mod SHIFT, 5, movetoworkspacesilent, 5"
- "$mod SHIFT, 6, movetoworkspacesilent, 6"
- "$mod SHIFT, 7, movetoworkspacesilent, 7"
- "$mod SHIFT, 8, movetoworkspacesilent, 8"
- "$mod SHIFT, 9, movetoworkspacesilent, 9"
- "$mod SHIFT, 0, movetoworkspacesilent, 10"
-
- # Move to tab
-
- "LALT, 1, hy3:focustab, index, 01"
- "LALT, 2, hy3:focustab, index, 02"
- "LALT, 3, hy3:focustab, index, 03"
- "LALT, 4, hy3:focustab, index, 04"
- "LALT, 5, hy3:focustab, index, 05"
- "LALT, 6, hy3:focustab, index, 06"
- "LALT, 7, hy3:focustab, index, 07"
- "LALT, 8, hy3:focustab, index, 08"
- "LALT, 9, hy3:focustab, index, 09"
- "LALT, 0, hy3:focustab, index, 10"
-
- "$mod SHIFT, B, hy3:makegroup, h"
- "$mod SHIFT, V, hy3:makegroup, v"
- "$mod SHIFT, C, hy3:changegroup, toggletab"
-
- # Scroll through existing workspaces with mod + scroll
-
- "$mod, mouse_down, workspace, e+1"
- "$mod, mouse_up, workspace, e-1"
- ];
-
- bindn = [
- # Focus windows with scroll wheel or middle click
-
- ", mouse:272, hy3:focustab, mouse"
- ", mouse_down, hy3:focustab, l, require_hovered"
- ", mouse_up, hy3:focustab, r, require_hovered"
- ];
-
- bindm = [
- # Move/resize windows with mod + LMB/RMB and dragging
-
- "$mod, mouse:272, movewindow"
- "$mod, mouse:273, resizewindow"
- ];
-
- binde = [
- # Audio
-
- # raise volume
- ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
- # lower volume
- ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
- # mute speaker
- ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
- # mute mic
- ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
-
- # Media
-
- # play
- ", XF86AudioPlay, exec, playerctl play-pause"
- # next
- ", XF86AudioNext, exec, playerctl next"
- # prev
- ", XF86AudioPrev, exec, playerctl previous"
-
- # Backlight
-
- ", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
- ", XF86MonBrightnessUp, exec, brightnessctl set 5%+"
- ];
-
- # Plugin configuration
- plugin = {
- # hy3
- hy3 = {
- tabs = {
- height = 24;
- text_height = 9;
- text_padding = 10;
- padding = 2;
- render_text = true;
- text_font = "monospace";
- radius = config.theme.outerRadius;
- border_width = config.theme.borderWidth;
-
- "col.active" = "${bg}";
- "col.active.border" = "${inactive}";
- "col.active.text" = "${fg}";
- "col.inactive" = "${bg}";
- "col.inactive.border" = "${inactive}";
- "col.inactive.text" = "${fg}";
- };
-
- autotile = {
- enable = true;
- };
- };
- };
-
- # XWayland
- xwayland = {
- force_zero_scaling = "true";
- use_nearest_neighbor = "false";
- };
-
- # Misc
- misc = {
- disable_hyprland_logo = true;
- disable_splash_rendering = true;
- key_press_enables_dpms = true;
- mouse_move_enables_dpms = true;
- enable_anr_dialog = false;
- vrr = 1;
- };
-
- # Ecosystem
- ecosystem = {
- no_update_news = true;
- no_donation_nag = true;
- };
-
- # Experimental
- experimental = {
- xx_color_management_v4 = true;
- };
- }; # end settings
- }; # end hyprland
- }; # end home-manager
-}
diff --git a/programs/hypr/hyprlock.nix b/programs/hypr/hyprlock.nix
deleted file mode 100644
index 130f379..0000000
--- a/programs/hypr/hyprlock.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- config,
- lib,
- ...
-}: let
- fg = "rgb(${config.theme.colors.fg})";
- bg = "rgb(${config.theme.colors.bg})";
- error = "rgb(${config.theme.colors.error})";
- trans = "rgba(0,0,0,0)";
-in {
- default.lockScreen = lib.mkDefault "hyprlock";
-
- home-manager.users.${config.user} = {
- programs.hyprlock = {
- enable = true;
-
- settings = {
- background = {
- path = config.theme.lockscreen;
- color = bg;
- blur_passes = 0;
- blur_size = 2;
- noise = 0;
- contrast = 0;
- brightness = 0;
- vibrancy = 0;
- vibrancy_darkness = 0.0;
- };
-
- # Password Input
- input-field = {
- size = "300, 30";
- outline_thickness = 0;
- dots_size = 0.25;
- dots_spacing = 0.55;
- dots_center = true;
- dots_rounding = -1;
- outer_color = trans;
- inner_color = trans;
- font_color = fg;
- fade_on_empty = false;
- placeholder_text = "Enter Password";
- hide_input = false;
- check_color = error;
- fail_color = error;
- capslock_color = -1;
- numlock_color = -1;
- bothlock_color = -1;
- invert_numlock = false;
- swap_font_color = false;
- font_family = config.theme.font.regular;
- position = "0, 50";
- halign = "center";
- valign = "bottom";
- };
-
- label = [
- # Date
- {
- text = "cmd[update:1000] echo \"$(date +\"%A, %B %d\")\"";
- color = fg;
- font_size = 20;
- font_family = config.theme.font.header;
- position = "0, -100";
- halign = "center";
- valign = "top";
- }
- # Clock
- {
- text = "cmd[update:1000] echo \"$(date +\"%k:%M:%S\")\"";
- color = fg;
- font_size = 90;
- font_family = config.theme.font.header;
- position = "0, -130";
- halign = "center";
- valign = "top";
- }
- ];
- };
- };
- };
-}
diff --git a/programs/hypr/hyprpaper.nix b/programs/hypr/hyprpaper.nix
deleted file mode 100644
index 13641b7..0000000
--- a/programs/hypr/hyprpaper.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- config,
- lib,
- ...
-}: {
- home-manager.users.${config.user} = {
- services.hyprpaper = {
- enable = true;
-
- settings = {
- preload = config.theme.wallpaper;
- wallpaper = ",${config.theme.wallpaper}";
- splash = false;
- };
- };
- };
-}
diff --git a/programs/kitty/default.nix b/programs/kitty/default.nix
deleted file mode 100644
index eac223b..0000000
--- a/programs/kitty/default.nix
+++ /dev/null
@@ -1,79 +0,0 @@
-{
- config,
- lib,
- ...
-}: {
- default.terminal = lib.mkDefault "kitty";
-
- home-manager.users.${config.user} = {
- programs.kitty = {
- enable = true;
- environment = {};
- extraConfig = "";
-
- settings = {
- # Font
- font_family = config.theme.font.monospace;
- font_size = 11;
- bold_font = "auto";
- italic_font = "auto";
- bold_italic_font = "auto";
-
- # Scrollback
- scrollback_lines = 10000;
- scrollback_pager_history_size = 300; # MB
-
- # Urls
- detect_urls = true;
- show_hyperlink_targets = false;
-
- # Window
- window_padding_width = config.theme.outerGap;
- window_border_width = 0;
- draw_minimal_borders = true;
- background_opacity = config.theme.opacity;
-
- # Disable audio
- enable_audio_bell = false;
-
- # Disable close prompt
- confirm_os_window_close = 0;
-
- # colors
- background = "#${config.theme.colors.bg}";
- foreground = "#${config.theme.colors.fg}";
- selection_background = "#${config.theme.colors.surface.bg}";
- selection_foreground = "#${config.theme.colors.surface.fg}";
- url_color = "#${config.theme.colors.bright.yellow}";
- cursor = "#${config.theme.colors.fg}";
- active_border_color = "#${config.theme.colors.primary}";
- inactive_border_color = "#${config.theme.colors.bg}";
- active_tab_background = "#${config.theme.colors.bg}";
- active_tab_foreground = "#${config.theme.colors.fg}";
- inactive_tab_background = "#${config.theme.colors.bg}";
- inactive_tab_foreground = "#${config.theme.colors.fg}";
- tab_bar_background = "#${config.theme.colors.bg}";
-
- # normal
- color0 = "#${config.theme.colors.normal.black}";
- color1 = "#${config.theme.colors.normal.red}";
- color2 = "#${config.theme.colors.normal.green}";
- color3 = "#${config.theme.colors.normal.yellow}";
- color4 = "#${config.theme.colors.normal.blue}";
- color5 = "#${config.theme.colors.normal.magenta}";
- color6 = "#${config.theme.colors.normal.cyan}";
- color7 = "#${config.theme.colors.normal.white}";
-
- # bright
- color8 = "#${config.theme.colors.bright.black}";
- color9 = "#${config.theme.colors.bright.red}";
- color10 = "#${config.theme.colors.bright.green}";
- color11 = "#${config.theme.colors.bright.yellow}";
- color12 = "#${config.theme.colors.bright.blue}";
- color13 = "#${config.theme.colors.bright.magenta}";
- color14 = "#${config.theme.colors.bright.cyan}";
- color15 = "#${config.theme.colors.bright.white}";
- };
- };
- };
-}
diff --git a/programs/mako/default.nix b/programs/mako/default.nix
deleted file mode 100644
index 94b0cd9..0000000
--- a/programs/mako/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- config,
- lib,
- ...
-}: {
- home-manager.users.${config.user} = {
- services.mako = {
- enable = false; # now using astal
-
- settings = {
- font = "${config.theme.font.monospace} 11";
-
- margin = toString config.theme.outerGap;
- padding = toString config.theme.innerGap;
-
- background-color = "#${config.theme.colors.bg}";
- progress-color = "#${config.theme.colors.primary}";
- text-color = "#${config.theme.colors.fg}";
-
- border-color = "#${config.theme.colors.fg}";
- border-size = config.theme.borderWidth;
- border-radius = config.theme.outerRadius;
-
- default-timeout = 5000;
- layer = "overlay";
- icons = true;
- };
- };
- };
-}
diff --git a/programs/steam/default.nix b/programs/steam/default.nix
deleted file mode 100644
index 65deeaa..0000000
--- a/programs/steam/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{lib, ...}: {
- nixpkgs.config.allowUnfreePredicate = pkg:
- builtins.elem (lib.getName pkg) [
- "steam"
- "steam-original"
- "steam-runtime"
- ];
-
- programs.gamescope = {
- enable = true;
- capSysNice = true;
- };
-
- programs.steam = {
- enable = true;
- remotePlay.openFirewall = true;
- dedicatedServer.openFirewall = true;
- localNetworkGameTransfers.openFirewall = true;
- gamescopeSession.enable = true;
- };
-
- # controllers
- hardware.xone.enable = true;
- hardware.steam-hardware.enable = true;
-}
diff --git a/programs/talc/default.nix b/programs/talc/default.nix
deleted file mode 100644
index 92ba578..0000000
--- a/programs/talc/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- config,
- pkgs,
- inputs,
- ...
-}: let
- system = pkgs.stdenv.hostPlatform.system;
- talc = inputs.talc.packages.${system};
-in {
- home-manager.users.${config.user} = {
- home.packages = [
- talc.talc
- ];
- };
-}
diff --git a/programs/unofficial-homestuck-collection/default.nix b/programs/unofficial-homestuck-collection/default.nix
deleted file mode 100644
index 834bc5c..0000000
--- a/programs/unofficial-homestuck-collection/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- config,
- pkgs,
- inputs,
- ...
-}: let
- system = pkgs.stdenv.hostPlatform.system;
- unofficial-homestuck-collection = inputs.self.packages.${system};
-in {
- home-manager.users.${config.user} = {
- home.packages = [
- unofficial-homestuck-collection.unofficial-homestuck-collection
- ];
- };
-}
diff --git a/programs/waybar/default.nix b/programs/waybar/default.nix
deleted file mode 100644
index 7602a82..0000000
--- a/programs/waybar/default.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- config,
- lib,
- ...
-}: {
- home-manager.users.${config.user} = {
- programs.waybar = {
- enable = false; # using astal now
-
- settings = [
- {
- height = 24;
- layer = "top";
- position = "top";
- spacing = 4;
-
- modules-left = [
- "hyprland/workspaces"
- ];
- modules-center = [
- "clock"
- ];
- modules-right = [
- "battery"
- "wireplumber"
- "network"
- "tray"
- ];
-
- "hyprland/workspaces" = {
- disable-scroll = true;
- all-outputs = true;
- format = "{name}";
- };
-
- battery = {
- interval = 1;
- states = {
- warning = 30;
- critical = 15;
- };
- format = " {capacity}%";
- format-charging = " {capacity}%";
- format-plugged = " {capacity}%";
- format-full = " {capacity}%";
- format-warning = " {capacity}%";
- format-critical = " {capacity}%";
- };
-
- wireplumber = {
- format = " {volume}%";
- format-bluetooth = " {volume}%";
- format-muted = " muted";
- scroll-step = 1;
- on-click = "pavucontrol";
- ignored-sinks = ["Easy Effects Sink"];
- };
-
- network = {
- format = " disconnected";
- format-wifi = " {essid}";
- format-ethernet = " {ipaddr}/{cidr}";
- format-disconnected = " disconnected";
- max-length = 50;
- on-click = "nm-connection-editor";
- };
-
- clock = {
- interval = 1;
- format = "{:%Y-%m-%d %a %H:%M:%S}";
- };
-
- tray = {
- spacing = config.theme.outerGap;
- };
- }
- ];
-
- style = import ./style.nix {theme = config.theme;};
- };
- };
-}
diff --git a/programs/wofi/default.nix b/programs/wofi/default.nix
deleted file mode 100644
index add0c26..0000000
--- a/programs/wofi/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- config,
- lib,
- ...
-}: {
- #default.appLauncher = lib.mkDefault "wofi --show drun --prompt 'Seach Programs'";
-
- home-manager.users.${config.user} = {
- programs.wofi = {
- enable = true;
-
- settings = {
- key_expand = "Tab";
- term = "kitty";
- matching = "multi-contains";
- insensitive = true;
- gtk_dark = true;
- hide_scroll = true;
- };
-
- style = import ./style.nix {theme = config.theme;};
- };
- };
-}
diff --git a/system/default.nix b/system/default.nix
index a026eb1..4695ea6 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -4,6 +4,11 @@
pkgs,
...
}: {
+ imports = [
+ ./hardware.nix
+ ./sshd.nix
+ ];
+
# allow flakes
nix.settings.experimental-features = ["nix-command" "flakes"];
@@ -121,15 +126,11 @@
openFirewall = true;
};
- # docker
- virtualisation.docker.enable = true;
- virtualisation.docker.storageDriver = "btrfs";
-
# create user account
users.users.${config.user} = {
isNormalUser = true;
description = config.fullName;
- extraGroups = ["networkmanager" "wheel" "sys" "video" "audio" "docker" "libvirtd"];
+ extraGroups = ["networkmanager" "wheel" "sys" "video" "audio"];
home = config.homePath;
shell = pkgs.zsh;
};
@@ -139,62 +140,4 @@
../files/certs/freyanet.crt
../files/certs/tinternet.crt
];
-
- # mime
- environment.pathsToLink = [
- "/share/mime"
- ];
-
- # fonts
- fonts.packages =
- (with pkgs; [
- corefonts
- dejavu_fonts
- fira-code
- fira-code-symbols
- jetbrains-mono
- material-icons
- nerd-fonts.fira-code
- noto-fonts
- noto-fonts-cjk-sans
- noto-fonts-emoji
- twemoji-color-font
- vistafonts
- ])
- ++ (with inputs.apple-fonts.packages.${pkgs.system}; [
- sf-pro
- sf-mono
- sf-compact
- ]);
-
- fonts.fontconfig = {
- enable = true;
- defaultFonts = {
- serif = [
- "Twemoji"
- "DejaVu Serif"
- ];
- sansSerif = [
- "Twemoji"
- "DejaVu Sans"
- ];
- monospace = [
- "Fira Code"
- "FiraCode Nerd Font Mono"
- "Font Awesome 6 Pro Regular"
- "Twemoji"
- "DejaVu Sans Mono"
- ];
- emoji = [
- "Twemoji"
- "Noto Color Emoji"
- ];
- };
- };
-
- # vms
- programs.virt-manager.enable = true;
- users.groups.libvirtd.members = [config.user];
- virtualisation.libvirtd.enable = true;
- virtualisation.spiceUSBRedirection.enable = true;
}
diff --git a/system/hardware.nix b/system/hardware.nix
new file mode 100644
index 0000000..853a6cc
--- /dev/null
+++ b/system/hardware.nix
@@ -0,0 +1,9 @@
+{pkgs, ...}: {
+ # yubikey support
+ services = {
+ pcscd.enable = true;
+ udev.packages = with pkgs; [
+ yubikey-personalization
+ ];
+ };
+}
diff --git a/programs/ssh/default.nix b/system/sshd.nix
index b6ecb1d..0e0f1a2 100644
--- a/programs/ssh/default.nix
+++ b/system/sshd.nix
@@ -1,16 +1,4 @@
-{
- config,
- lib,
- ...
-}: {
- # ssh config
- home-manager.users.${config.user} = {
- programs.ssh = {
- enable = true;
- extraConfig = lib.fileContents ./config;
- };
- };
-
+{config, ...}: {
# sshd
services.openssh = {
enable = true;
@@ -39,7 +27,7 @@
# add authorized keys
users.users.${config.user} = {
openssh.authorizedKeys.keyFiles = [
- ../../files/keys/ssh.pub
+ ../files/keys/ssh.pub
];
};
}