diff --git a/flake.nix b/flake.nix index 8f09afe..3b0474b 100644 --- a/flake.nix +++ b/flake.nix @@ -104,14 +104,64 @@ modules = [ { - nixpkgs.config = pkgConfig; - nixpkgs.overlays = [ - catppuccin-palette.overlays.default - niri.overlays.niri - noctalia.overlays.default - nur.overlays.default - (import ./packages/overlay.nix) - ]; + nixpkgs = { + config = pkgConfig; + overlays = [ + catppuccin-palette.overlays.default + niri.overlays.niri + noctalia.overlays.default + nur.overlays.default + (import ./packages/overlay.nix) + ]; + }; + nix = { + settings = { + experimental-features = [ + "nix-command" + "flakes" + ]; + + substituters = [ + "https://attic.xuyh0120.win/lantian" + "https://cache.garnix.io" + ]; + + trusted-public-keys = [ + "lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc=" + "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + ]; + + trusted-users = [ + "root" + "sckova" + ]; + + # Increase file descriptor limit for builds + sandbox = "relaxed"; + extra-sandbox-paths = []; + build-users-group = "nixbld"; + }; + + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + }; + + users.users.sckova = { + isNormalUser = true; + description = "Sean Kovacs"; + extraGroups = [ + "wheel" + "networkmanager" + "podman" + ]; + hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCn/eXMq04vcXNqGVzlZOw2C2dQYBqzWsoigdFW09XqC2WPaGljbAIayzaD7Q1tIlPGGy10+nipAXAk1CHAnrQ2KSg4v/SwFphF48V3joeQmideC4vo0EIQEQibbMtj3oFezqRcRZINl/1hr4t0myZ3zkoTjh3HCkqJEMGUdArDMEVPA5mwcKSLsyshW9LMG/3C9YKKPU1/lVsoeDkj8AVZA0srhkApuRKF0IVu8KoPd6ldvSWgpQ1iuQ+MEMSeOUJytieBkzeY9zEVePaQ86oIMDUzqq8OTN37RyShiJKPskKyj12rJI2eFtI/viGaj8P6/yvKqMp3F4kAsPAuvMLLAIYCNa+139rDpkkIKB6lVtgq0jnJGRywaYXGIRyExNcVAr8I9wrNnNN2M4whVeYBxfLMzKZ+VvfK39AaGvnzPuFDLqUC87sN4c/1KZQo+TCtlaxcYvqowWylw5JHUt8uwFcO/dUebQxxAv8EdyPZGJ/54y19PsTbu9KyxSc2gIU= sckova" + ]; + }; } ./system ./system/widevine @@ -120,44 +170,47 @@ ./system/hosts/${hostname} ./hardware/${hostname} catppuccin.nixosModules.catppuccin + niri.nixosModules.niri home-manager.nixosModules.home-manager noctalia.nixosModules.default { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.sckova = { - imports = [ - ./home - ./home/games/minecraft - ./home/games/morrowind - ./home/graphical/discord - ./home/graphical/firefox - ./home/graphical/mpv - ./home/tiling/niri - ./home/tiling/wallpaper - ./home/systemd - ./home/terminal/btop - ./home/terminal/fish - ./home/terminal/kitty - ./home/terminal/nvim - ./home/kde - ./home/theming - ./home/vscode - ./home/hosts/${hostname} + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.sckova = { + imports = [ + ./home + ./home/games/minecraft + ./home/games/morrowind + ./home/graphical/discord + ./home/graphical/firefox + ./home/graphical/mpv + ./home/tiling/niri + ./home/tiling/wallpaper + ./home/systemd + ./home/terminal/btop + ./home/terminal/fish + ./home/terminal/kitty + ./home/terminal/nvim + ./home/kde + ./home/theming + ./home/vscode + ./home/hosts/${hostname} + ]; + }; + sharedModules = [ + catppuccin.homeModules.catppuccin + plasma-manager.homeModules.plasma-manager + noctalia.homeModules.default + spicetify-nix.homeManagerModules.default + nixvim.homeModules.nixvim ]; - }; - home-manager.sharedModules = [ - plasma-manager.homeModules.plasma-manager - niri.homeModules.niri - noctalia.homeModules.default - spicetify-nix.homeManagerModules.default - nixvim.homeModules.nixvim - ]; - home-manager.extraSpecialArgs = { - inherit spicetify-nix; - pkgs-unstable = import nixpkgs-unstable { - inherit system; - config = pkgConfig; + extraSpecialArgs = { + inherit spicetify-nix; + pkgs-unstable = import nixpkgs-unstable { + inherit system; + config = pkgConfig; + }; }; }; } @@ -175,6 +228,10 @@ inherit system; config = pkgConfig; }; + pkgs-unstable = import nixpkgs-unstable { + inherit system; + config = pkgConfig; + }; home.username = user; home.homeDirectory = "/home/${user}"; modules = [ @@ -187,33 +244,25 @@ noctalia.homeModules.noctalia nixvim.homeModules.nixvim ]; - extraSpecialArgs = { - pkgs-unstable = import nixpkgs-unstable { - inherit system; - config = pkgConfig; - }; - }; }; - in - { - nixosConfigurations = - { - peach = mkNixosSystem { - hostname = "peach"; - system = "aarch64-linux"; - extraModules = [ - apple-silicon.nixosModules.default - {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} - ]; - }; + in { + nixosConfigurations = { + peach = mkNixosSystem { + hostname = "peach"; + system = "aarch64-linux"; + extraModules = [ + apple-silicon.nixosModules.default + {nixpkgs.overlays = [apple-silicon.overlays.apple-silicon-overlay];} + ]; + }; - alien = mkNixosSystem { - hostname = "alien"; - system = "x86_64-linux"; - extraSpecialArgs = { - inherit nix-cachyos-kernel; - }; - }; + alien = + mkNixosSystem { + hostname = "alien"; + system = "x86_64-linux"; + extraModules = [ + {nixpkgs.overlays = [nix-cachyos-kernel.overlays.default];} + ]; } // nixpkgs.lib.genAttrs supportedSystems ( system: @@ -222,8 +271,10 @@ inherit system; } ); + }; - homeConfigurations = { + homeConfigurations = + { peach = mkHomeConfig { user = "sckova"; hostname = "peach"; @@ -234,14 +285,14 @@ hostname = "alien"; system = "x86_64-linux"; }; - }; - } - // nixpkgs.lib.genAttrs supportedSystems ( - system: - mkHomeConfig { - user = "sckova"; - hostname = "vm-generic"; - inherit system; - } - ); + } + // nixpkgs.lib.genAttrs supportedSystems ( + system: + mkHomeConfig { + user = "sckova"; + hostname = "vm-generic"; + inherit system; + } + ); + }; } diff --git a/home/hosts/alien/default.nix b/home/hosts/alien/default.nix index 7d17545..6c956c3 100644 --- a/home/hosts/alien/default.nix +++ b/home/hosts/alien/default.nix @@ -15,6 +15,7 @@ pkgs.adwsteamgtk pkgs-unstable.ckan + pkgs.daggerfall-unity ]; programs.noctalia-shell.settings.brightness = { diff --git a/home/tiling/niri/niri.nix b/home/tiling/niri/niri.nix index 282ac9a..5b82df5 100644 --- a/home/tiling/niri/niri.nix +++ b/home/tiling/niri/niri.nix @@ -3,408 +3,411 @@ pkgs, ... }: { - programs.niri.package = pkgs.niri-unstable.overrideAttrs (old: { - doCheck = false; - }); # https://github.com/sodiboo/niri-flake/blob/main/docs.md - programs.niri.settings = { - screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; - hotkey-overlay.skip-at-startup = true; - prefer-no-csd = true; - gestures.hot-corners.enable = false; - spawn-at-startup = []; # systemd is based sorry - overview = { - backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; - workspace-shadow.enable = false; - }; - input = { - focus-follows-mouse = { - enable = true; - max-scroll-amount = "0%"; + programs.niri = { + package = pkgs.niri-unstable.overrideAttrs (old: { + doCheck = false; + }); + + settings = { + screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; + hotkey-overlay.skip-at-startup = true; + prefer-no-csd = true; + gestures.hot-corners.enable = false; + spawn-at-startup = []; # systemd is based sorry + overview = { + backdrop-color = pkgs.catppuccin.${config.catppuccin.flavor}.crust; + workspace-shadow.enable = false; }; - keyboard = { - numlock = false; - repeat-delay = 600; - repeat-rate = 25; + input = { + focus-follows-mouse = { + enable = true; + max-scroll-amount = "0%"; + }; + keyboard = { + numlock = false; + repeat-delay = 600; + repeat-rate = 25; + }; + mouse = { + enable = true; + accel-profile = "adaptive"; + natural-scroll = false; + }; + touchpad = { + enable = true; + accel-profile = "adaptive"; + natural-scroll = true; + tap = false; + drag = false; + }; }; - mouse = { - enable = true; - accel-profile = "adaptive"; - natural-scroll = false; + environment = { + QT_QPA_PLATFORM = "wayland"; + QT_QPA_PLATFORMTHEME = "qt6ct"; + DISPLAY = null; + XCURSOR_THEME = config.userOptions.cursor.name; + XCURSOR_SIZE = toString config.userOptions.cursor.size; }; - touchpad = { - enable = true; - accel-profile = "adaptive"; - natural-scroll = true; - tap = false; - drag = false; + outputs = { + "eDP-1" = { + scale = 1.75; + }; + "HDMI-A-1" = { + scale = 2; + }; }; - }; - environment = { - QT_QPA_PLATFORM = "wayland"; - QT_QPA_PLATFORMTHEME = "qt6ct"; - DISPLAY = null; - XCURSOR_THEME = config.userOptions.cursor.name; - XCURSOR_SIZE = toString config.userOptions.cursor.size; - }; - outputs = { - "eDP-1" = { - scale = 1.75; + cursor = { + hide-when-typing = true; + hide-after-inactive-ms = 5000; + size = config.userOptions.cursor.size; + theme = config.userOptions.cursor.name; }; - "HDMI-A-1" = { - scale = 2; + layout = { + gaps = 4; + background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; + default-column-width = { + proportion = 0.5; + }; + preset-column-widths = [ + {proportion = 1.0 / 3.0;} + {proportion = 1.0 / 2.0;} + {proportion = 2.0 / 3.0;} + ]; + border = { + enable = true; + width = 2; + active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + }; + focus-ring = { + enable = false; + width = 2; + active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; + inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; + urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; + }; + shadow = { + enable = true; + spread = 5; + offset.x = 0; + offset.y = 5; + softness = 30; + color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; + }; }; - }; - cursor = { - hide-when-typing = true; - hide-after-inactive-ms = 2000; - size = config.userOptions.cursor.size; - theme = config.userOptions.cursor.name; - }; - layout = { - gaps = 4; - background-color = pkgs.catppuccin.${config.catppuccin.flavor}.mantle; - default-column-width = { - proportion = 0.5; - }; - preset-column-widths = [ - {proportion = 1.0 / 3.0;} - {proportion = 1.0 / 2.0;} - {proportion = 2.0 / 3.0;} + window-rules = [ + { + matches = [ + { + app-id = "firefox$"; + title = "^Picture-in-Picture$"; + } + ]; + open-floating = true; + default-floating-position = { + x = 32; + y = 32; + relative-to = "bottom-left"; + }; + } + { + geometry-corner-radius = { + top-left = 16.0; + top-right = 16.0; + bottom-left = 16.0; + bottom-right = 16.0; + }; + clip-to-geometry = true; + } + { + matches = [ + { + app-id = "openmw"; + title = "OpenMW"; + } + { + app-id = "Minecraft"; + title = "Minecraft"; + } + ]; + open-maximized = true; + open-focused = true; + } + { + matches = [ + { + app-id = "mpv"; + } + ]; + border.active.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface1; + } ]; - border = { - enable = true; - width = 2; - active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; - }; - focus-ring = { - enable = false; - width = 2; - active.color = pkgs.catppuccin.${config.catppuccin.flavor}.${config.catppuccin.accent}; - inactive.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface0; - urgent.color = pkgs.catppuccin.${config.catppuccin.flavor}.maroon; - }; - shadow = { - enable = true; - spread = 5; - offset.x = 0; - offset.y = 5; - softness = 30; - color = pkgs.catppuccin.${config.catppuccin.flavor}.base + "77"; - }; - }; - window-rules = [ - { - matches = [ - { - app-id = "firefox$"; - title = "^Picture-in-Picture$"; - } - ]; - open-floating = true; - default-floating-position = { - x = 32; - y = 32; - relative-to = "bottom-left"; + binds = { + "Mod+Shift+Slash".action.show-hotkey-overlay = {}; + + "Mod+T" = { + action.spawn = ["kitty"]; + hotkey-overlay.title = "Open a Terminal: kitty"; }; - } - { - geometry-corner-radius = { - top-left = 16.0; - top-right = 16.0; - bottom-left = 16.0; - bottom-right = 16.0; + "Mod+Space" = { + action.spawn-sh = [ + "noctalia-shell ipc call launcher toggle" + ]; + hotkey-overlay.title = "Run an Application: Noctalia app launcher"; }; - clip-to-geometry = true; - } - { - matches = [ - { - app-id = "openmw"; - title = "OpenMW"; - } - { - app-id = "Minecraft"; - title = "Minecraft"; - } - ]; - open-maximized = true; - open-focused = true; - } - { - matches = [ - { - app-id = "mpv"; - } - ]; - border.active.color = pkgs.catppuccin.${config.catppuccin.flavor}.surface1; - } - ]; - binds = { - "Mod+Shift+Slash".action.show-hotkey-overlay = {}; - "Mod+T" = { - action.spawn = ["kitty"]; - hotkey-overlay.title = "Open a Terminal: kitty"; - }; - "Mod+Space" = { - action.spawn-sh = [ - "noctalia-shell ipc call launcher toggle" - ]; - hotkey-overlay.title = "Run an Application: Noctalia app launcher"; - }; + "XF86AudioRaiseVolume" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume increase" + ]; + allow-when-locked = true; + }; + "XF86AudioLowerVolume" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume decrease" + ]; + allow-when-locked = true; + }; + "Shift+XF86AudioRaiseVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01+" + ]; + allow-when-locked = true; + }; + "Shift+XF86AudioLowerVolume" = { + action.spawn = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + "0.01-" + ]; + allow-when-locked = true; + }; + "XF86AudioMute" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume muteOutput" + ]; + allow-when-locked = true; + }; + "XF86AudioMicMute" = { + action.spawn-sh = [ + "noctalia-shell ipc call volume muteInput" + ]; + allow-when-locked = true; + }; - "XF86AudioRaiseVolume" = { - action.spawn-sh = [ - "noctalia-shell ipc call volume increase" - ]; - allow-when-locked = true; - }; - "XF86AudioLowerVolume" = { - action.spawn-sh = [ - "noctalia-shell ipc call volume decrease" - ]; - allow-when-locked = true; - }; - "Shift+XF86AudioRaiseVolume" = { - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.01+" - ]; - allow-when-locked = true; - }; - "Shift+XF86AudioLowerVolume" = { - action.spawn = [ - "wpctl" - "set-volume" - "@DEFAULT_AUDIO_SINK@" - "0.01-" - ]; - allow-when-locked = true; - }; - "XF86AudioMute" = { - action.spawn-sh = [ - "noctalia-shell ipc call volume muteOutput" - ]; - allow-when-locked = true; - }; - "XF86AudioMicMute" = { - action.spawn-sh = [ - "noctalia-shell ipc call volume muteInput" - ]; - allow-when-locked = true; - }; + "XF86MonBrightnessUp" = { + action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "increase"]; + allow-when-locked = true; + }; - "XF86MonBrightnessUp" = { - action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "increase"]; - allow-when-locked = true; - }; + "XF86MonBrightnessDown" = { + action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "decrease"]; + allow-when-locked = true; + }; - "XF86MonBrightnessDown" = { - action.spawn = ["noctalia-shell" "ipc" "call" "brightness" "decrease"]; - allow-when-locked = true; - }; + "Shift+XF86MonBrightnessUp" = { + action.spawn = ["brightnessctl" "--class=backlight" "set" "+1%"]; + allow-when-locked = true; + }; - "Shift+XF86MonBrightnessUp" = { - action.spawn = ["brightnessctl" "--class=backlight" "set" "+1%"]; - allow-when-locked = true; - }; + "Shift+XF86MonBrightnessDown" = { + action.spawn = ["brightnessctl" "--class=backlight" "set" "1%-"]; + allow-when-locked = true; + }; - "Shift+XF86MonBrightnessDown" = { - action.spawn = ["brightnessctl" "--class=backlight" "set" "1%-"]; - allow-when-locked = true; - }; + "XF86AudioPrev" = { + action.spawn = ["playerctl" "previous"]; + allow-when-locked = true; + }; - "XF86AudioPrev" = { - action.spawn = ["playerctl" "previous"]; - allow-when-locked = true; - }; + "XF86AudioPlay" = { + action.spawn = ["playerctl" "play-pause"]; + allow-when-locked = true; + }; - "XF86AudioPlay" = { - action.spawn = ["playerctl" "play-pause"]; - allow-when-locked = true; - }; + "XF86AudioNext" = { + action.spawn = ["playerctl" "next"]; + allow-when-locked = true; + }; - "XF86AudioNext" = { - action.spawn = ["playerctl" "next"]; - allow-when-locked = true; - }; + "XF86Sleep" = { + action.power-off-monitors = {}; + }; - "XF86Sleep" = { - action.power-off-monitors = {}; - }; + "XF86Search" = { + action.spawn = ["noctalia-shell" "ipc" "call" "launcher" "toggle"]; + allow-when-locked = true; + }; - "XF86Search" = { - action.spawn = ["noctalia-shell" "ipc" "call" "launcher" "toggle"]; - allow-when-locked = true; - }; + "XF86LaunchA" = { + action.spawn = ["niri" "msg" "action" "toggle-overview"]; + allow-when-locked = true; + }; - "XF86LaunchA" = { - action.spawn = ["niri" "msg" "action" "toggle-overview"]; - allow-when-locked = true; - }; + "Mod+O" = { + action.toggle-overview = {}; + repeat = false; + }; - "Mod+O" = { - action.toggle-overview = {}; - repeat = false; - }; + "Mod+Q" = { + action.close-window = {}; + repeat = false; + }; - "Mod+Q" = { - action.close-window = {}; - repeat = false; - }; + "Mod+Left".action.focus-column-left = {}; + "Mod+Down".action.focus-window-down = {}; + "Mod+Up".action.focus-window-up = {}; + "Mod+Right".action.focus-column-right = {}; + "Mod+H".action.focus-column-left = {}; + "Mod+J".action.focus-window-down = {}; + "Mod+K".action.focus-window-up = {}; + "Mod+L".action.focus-column-right = {}; - "Mod+Left".action.focus-column-left = {}; - "Mod+Down".action.focus-window-down = {}; - "Mod+Up".action.focus-window-up = {}; - "Mod+Right".action.focus-column-right = {}; - "Mod+H".action.focus-column-left = {}; - "Mod+J".action.focus-window-down = {}; - "Mod+K".action.focus-window-up = {}; - "Mod+L".action.focus-column-right = {}; + "Mod+Ctrl+Left".action.move-column-left = {}; + "Mod+Ctrl+Down".action.move-window-down = {}; + "Mod+Ctrl+Up".action.move-window-up = {}; + "Mod+Ctrl+Right".action.move-column-right = {}; + "Mod+Ctrl+H".action.move-column-left = {}; + "Mod+Ctrl+J".action.move-window-down = {}; + "Mod+Ctrl+K".action.move-window-up = {}; + "Mod+Ctrl+L".action.move-column-right = {}; - "Mod+Ctrl+Left".action.move-column-left = {}; - "Mod+Ctrl+Down".action.move-window-down = {}; - "Mod+Ctrl+Up".action.move-window-up = {}; - "Mod+Ctrl+Right".action.move-column-right = {}; - "Mod+Ctrl+H".action.move-column-left = {}; - "Mod+Ctrl+J".action.move-window-down = {}; - "Mod+Ctrl+K".action.move-window-up = {}; - "Mod+Ctrl+L".action.move-column-right = {}; + "Mod+Home".action.focus-column-first = {}; + "Mod+End".action.focus-column-last = {}; + "Mod+Ctrl+Home".action.move-column-to-first = {}; + "Mod+Ctrl+End".action.move-column-to-last = {}; - "Mod+Home".action.focus-column-first = {}; - "Mod+End".action.focus-column-last = {}; - "Mod+Ctrl+Home".action.move-column-to-first = {}; - "Mod+Ctrl+End".action.move-column-to-last = {}; + "Mod+Shift+Left".action.focus-monitor-left = {}; + "Mod+Shift+Down".action.focus-monitor-down = {}; + "Mod+Shift+Up".action.focus-monitor-up = {}; + "Mod+Shift+Right".action.focus-monitor-right = {}; + "Mod+Shift+H".action.focus-monitor-left = {}; + "Mod+Shift+J".action.focus-monitor-down = {}; + "Mod+Shift+K".action.focus-monitor-up = {}; + "Mod+Shift+L".action.focus-monitor-right = {}; - "Mod+Shift+Left".action.focus-monitor-left = {}; - "Mod+Shift+Down".action.focus-monitor-down = {}; - "Mod+Shift+Up".action.focus-monitor-up = {}; - "Mod+Shift+Right".action.focus-monitor-right = {}; - "Mod+Shift+H".action.focus-monitor-left = {}; - "Mod+Shift+J".action.focus-monitor-down = {}; - "Mod+Shift+K".action.focus-monitor-up = {}; - "Mod+Shift+L".action.focus-monitor-right = {}; + "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = {}; + "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = {}; + "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = {}; + "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = {}; + "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = {}; + "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = {}; + "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = {}; + "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = {}; - "Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = {}; - "Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = {}; - "Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = {}; - "Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = {}; - "Mod+Shift+Ctrl+H".action.move-column-to-monitor-left = {}; - "Mod+Shift+Ctrl+J".action.move-column-to-monitor-down = {}; - "Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = {}; - "Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = {}; + "Mod+Page_Down".action.focus-workspace-down = {}; + "Mod+Page_Up".action.focus-workspace-up = {}; + "Mod+U".action.focus-workspace-down = {}; + "Mod+I".action.focus-workspace-up = {}; + "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = {}; + "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = {}; + "Mod+Ctrl+U".action.move-column-to-workspace-down = {}; + "Mod+Ctrl+I".action.move-column-to-workspace-up = {}; - "Mod+Page_Down".action.focus-workspace-down = {}; - "Mod+Page_Up".action.focus-workspace-up = {}; - "Mod+U".action.focus-workspace-down = {}; - "Mod+I".action.focus-workspace-up = {}; - "Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = {}; - "Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = {}; - "Mod+Ctrl+U".action.move-column-to-workspace-down = {}; - "Mod+Ctrl+I".action.move-column-to-workspace-up = {}; + "Mod+Shift+Page_Down".action.move-workspace-down = {}; + "Mod+Shift+Page_Up".action.move-workspace-up = {}; + "Mod+Shift+U".action.move-workspace-down = {}; + "Mod+Shift+I".action.move-workspace-up = {}; - "Mod+Shift+Page_Down".action.move-workspace-down = {}; - "Mod+Shift+Page_Up".action.move-workspace-up = {}; - "Mod+Shift+U".action.move-workspace-down = {}; - "Mod+Shift+I".action.move-workspace-up = {}; + "Mod+WheelScrollDown" = { + action.focus-workspace-down = {}; + cooldown-ms = 150; + }; + "Mod+WheelScrollUp" = { + action.focus-workspace-up = {}; + cooldown-ms = 150; + }; + "Mod+Ctrl+WheelScrollDown" = { + action.move-column-to-workspace-down = {}; + cooldown-ms = 150; + }; + "Mod+Ctrl+WheelScrollUp" = { + action.move-column-to-workspace-up = {}; + cooldown-ms = 150; + }; - "Mod+WheelScrollDown" = { - action.focus-workspace-down = {}; - cooldown-ms = 150; - }; - "Mod+WheelScrollUp" = { - action.focus-workspace-up = {}; - cooldown-ms = 150; - }; - "Mod+Ctrl+WheelScrollDown" = { - action.move-column-to-workspace-down = {}; - cooldown-ms = 150; - }; - "Mod+Ctrl+WheelScrollUp" = { - action.move-column-to-workspace-up = {}; - cooldown-ms = 150; - }; + "Mod+WheelScrollRight".action.focus-column-right = {}; + "Mod+WheelScrollLeft".action.focus-column-left = {}; + "Mod+Ctrl+WheelScrollRight".action.move-column-right = {}; + "Mod+Ctrl+WheelScrollLeft".action.move-column-left = {}; - "Mod+WheelScrollRight".action.focus-column-right = {}; - "Mod+WheelScrollLeft".action.focus-column-left = {}; - "Mod+Ctrl+WheelScrollRight".action.move-column-right = {}; - "Mod+Ctrl+WheelScrollLeft".action.move-column-left = {}; + "Mod+Shift+WheelScrollDown".action.focus-column-right = {}; + "Mod+Shift+WheelScrollUp".action.focus-column-left = {}; + "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = {}; + "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = {}; - "Mod+Shift+WheelScrollDown".action.focus-column-right = {}; - "Mod+Shift+WheelScrollUp".action.focus-column-left = {}; - "Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = {}; - "Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = {}; + "Mod+1".action.focus-workspace = 1; + "Mod+2".action.focus-workspace = 2; + "Mod+3".action.focus-workspace = 3; + "Mod+4".action.focus-workspace = 4; + "Mod+5".action.focus-workspace = 5; + "Mod+6".action.focus-workspace = 6; + "Mod+7".action.focus-workspace = 7; + "Mod+8".action.focus-workspace = 8; + "Mod+9".action.focus-workspace = 9; + "Mod+Ctrl+1".action.move-column-to-workspace = 1; + "Mod+Ctrl+2".action.move-column-to-workspace = 2; + "Mod+Ctrl+3".action.move-column-to-workspace = 3; + "Mod+Ctrl+4".action.move-column-to-workspace = 4; + "Mod+Ctrl+5".action.move-column-to-workspace = 5; + "Mod+Ctrl+6".action.move-column-to-workspace = 6; + "Mod+Ctrl+7".action.move-column-to-workspace = 7; + "Mod+Ctrl+8".action.move-column-to-workspace = 8; + "Mod+Ctrl+9".action.move-column-to-workspace = 9; - "Mod+1".action.focus-workspace = 1; - "Mod+2".action.focus-workspace = 2; - "Mod+3".action.focus-workspace = 3; - "Mod+4".action.focus-workspace = 4; - "Mod+5".action.focus-workspace = 5; - "Mod+6".action.focus-workspace = 6; - "Mod+7".action.focus-workspace = 7; - "Mod+8".action.focus-workspace = 8; - "Mod+9".action.focus-workspace = 9; - "Mod+Ctrl+1".action.move-column-to-workspace = 1; - "Mod+Ctrl+2".action.move-column-to-workspace = 2; - "Mod+Ctrl+3".action.move-column-to-workspace = 3; - "Mod+Ctrl+4".action.move-column-to-workspace = 4; - "Mod+Ctrl+5".action.move-column-to-workspace = 5; - "Mod+Ctrl+6".action.move-column-to-workspace = 6; - "Mod+Ctrl+7".action.move-column-to-workspace = 7; - "Mod+Ctrl+8".action.move-column-to-workspace = 8; - "Mod+Ctrl+9".action.move-column-to-workspace = 9; + "Mod+BracketLeft".action.consume-or-expel-window-left = {}; + "Mod+BracketRight".action.consume-or-expel-window-right = {}; - "Mod+BracketLeft".action.consume-or-expel-window-left = {}; - "Mod+BracketRight".action.consume-or-expel-window-right = {}; + "Mod+Comma".action.consume-window-into-column = {}; + "Mod+Period".action.expel-window-from-column = {}; - "Mod+Comma".action.consume-window-into-column = {}; - "Mod+Period".action.expel-window-from-column = {}; + "Mod+R".action.switch-preset-column-width = {}; + "Mod+Shift+R".action.switch-preset-window-height = {}; + "Mod+Ctrl+R".action.reset-window-height = {}; + "Mod+F".action.maximize-column = {}; + "Mod+Shift+F".action.maximize-window-to-edges = {}; + "Mod+Ctrl+Shift+F".action.fullscreen-window = {}; - "Mod+R".action.switch-preset-column-width = {}; - "Mod+Shift+R".action.switch-preset-window-height = {}; - "Mod+Ctrl+R".action.reset-window-height = {}; - "Mod+F".action.maximize-column = {}; - "Mod+Shift+F".action.maximize-window-to-edges = {}; - "Mod+Ctrl+Shift+F".action.fullscreen-window = {}; + "Mod+Ctrl+F".action.expand-column-to-available-width = {}; - "Mod+Ctrl+F".action.expand-column-to-available-width = {}; + "Mod+C".action.center-column = {}; - "Mod+C".action.center-column = {}; + "Mod+Ctrl+C".action.center-visible-columns = {}; - "Mod+Ctrl+C".action.center-visible-columns = {}; + "Mod+Minus".action.set-column-width = "-10%"; + "Mod+Equal".action.set-column-width = "+10%"; - "Mod+Minus".action.set-column-width = "-10%"; - "Mod+Equal".action.set-column-width = "+10%"; + "Mod+Shift+Minus".action.set-window-height = "-10%"; + "Mod+Shift+Equal".action.set-window-height = "+10%"; - "Mod+Shift+Minus".action.set-window-height = "-10%"; - "Mod+Shift+Equal".action.set-window-height = "+10%"; + "Mod+V".action.toggle-window-floating = {}; + "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = {}; - "Mod+V".action.toggle-window-floating = {}; - "Mod+Shift+V".action.switch-focus-between-floating-and-tiling = {}; + "Mod+W".action.toggle-column-tabbed-display = {}; - "Mod+W".action.toggle-column-tabbed-display = {}; + "Print".action.screenshot = {}; + "Mod+Shift+S".action.screenshot = {}; + "Ctrl+Print".action.screenshot-screen = {}; + "Alt+Print".action.screenshot-window = {}; - "Print".action.screenshot = {}; - "Mod+Shift+S".action.screenshot = {}; - "Ctrl+Print".action.screenshot-screen = {}; - "Alt+Print".action.screenshot-window = {}; + "Mod+Escape" = { + action.toggle-keyboard-shortcuts-inhibit = {}; + allow-inhibiting = false; + }; - "Mod+Escape" = { - action.toggle-keyboard-shortcuts-inhibit = {}; - allow-inhibiting = false; - }; + "Mod+Shift+E".action.quit = {}; + "Ctrl+Alt+Delete".action.quit = {}; - "Mod+Shift+E".action.quit = {}; - "Ctrl+Alt+Delete".action.quit = {}; - - "Mod+Shift+P" = { - action.power-off-monitors = {}; - hotkey-overlay.title = "Turn off the display"; + "Mod+Shift+P" = { + action.power-off-monitors = {}; + hotkey-overlay.title = "Turn off the display"; + }; }; }; }; diff --git a/system/default.nix b/system/default.nix index 95c2342..19797db 100755 --- a/system/default.nix +++ b/system/default.nix @@ -1,5 +1,5 @@ # Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page +# your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). { config, @@ -8,48 +8,9 @@ inputs, ... }: { - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; - - nix.settings.trusted-users = [ - "root" - "sckova" - ]; - - nix.settings = { - # Increase file descriptor limit for builds - sandbox = "relaxed"; - extra-sandbox-paths = []; - build-users-group = "nixbld"; - }; - - security.pam.loginLimits = [ - { - domain = "*"; - type = "soft"; - item = "nofile"; - value = "65536"; - } - { - domain = "*"; - type = "hard"; - item = "nofile"; - value = "65536"; - } - ]; - - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; - }; - - environment.sessionVariables = rec { + environment.sessionVariables = { + # this makes electron apps work per the wiki NIXOS_OZONE_WL = "1"; - EDITOR = "nvim"; - TERMINAL = "kitty"; }; boot = { @@ -120,11 +81,16 @@ services = { desktopManager.plasma6.enable = true; - displayManager.sddm = { - enable = true; - wayland.enable = true; - enableHidpi = true; + displayManager = { + sddm = { + enable = true; + wayland.enable = true; + enableHidpi = true; + }; + + defaultSession = "niri"; }; + libinput.enable = true; printing.enable = true; pipewire = { @@ -136,29 +102,6 @@ udisks2.enable = true; }; - virtualisation = { - containers.enable = true; - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; # Required for containers under podman-compose to be able to talk to each other. - }; - }; - - systemd.tmpfiles.rules = ["L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware"]; - - users.users.sckova = { - isNormalUser = true; - description = "Sean Kovacs"; - extraGroups = [ - "wheel" - "networkmanager" - "podman" - ]; - packages = with pkgs; []; - hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; - }; - environment = { systemPackages = with pkgs; [ git @@ -185,9 +128,6 @@ }; services.openssh.enable = true; - users.users."sckova".openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCn/eXMq04vcXNqGVzlZOw2C2dQYBqzWsoigdFW09XqC2WPaGljbAIayzaD7Q1tIlPGGy10+nipAXAk1CHAnrQ2KSg4v/SwFphF48V3joeQmideC4vo0EIQEQibbMtj3oFezqRcRZINl/1hr4t0myZ3zkoTjh3HCkqJEMGUdArDMEVPA5mwcKSLsyshW9LMG/3C9YKKPU1/lVsoeDkj8AVZA0srhkApuRKF0IVu8KoPd6ldvSWgpQ1iuQ+MEMSeOUJytieBkzeY9zEVePaQ86oIMDUzqq8OTN37RyShiJKPskKyj12rJI2eFtI/viGaj8P6/yvKqMp3F4kAsPAuvMLLAIYCNa+139rDpkkIKB6lVtgq0jnJGRywaYXGIRyExNcVAr8I9wrNnNN2M4whVeYBxfLMzKZ+VvfK39AaGvnzPuFDLqUC87sN4c/1KZQo+TCtlaxcYvqowWylw5JHUt8uwFcO/dUebQxxAv8EdyPZGJ/54y19PsTbu9KyxSc2gIU= sckova" - ]; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions diff --git a/system/hosts/alien/default.nix b/system/hosts/alien/default.nix index c83ae54..a6d1a10 100644 --- a/system/hosts/alien/default.nix +++ b/system/hosts/alien/default.nix @@ -1,8 +1,6 @@ { config, pkgs, - catppuccin, - nix-cachyos-kernel, ... }: { networking.hostName = "alien"; @@ -25,36 +23,14 @@ ''; hardware.i2c.enable = true; - boot.binfmt.emulatedSystems = [ - "aarch64-linux" - "riscv64-linux" - ]; - catppuccin.accent = "blue"; - home-manager.users.sckova = { - imports = [catppuccin.homeModules.catppuccin]; - }; - boot.loader.systemd-boot.consoleMode = "max"; # boot.kernelPackages = pkgs.linuxPackages; # let's use the CachyOS kernel instead! - nixpkgs.overlays = [nix-cachyos-kernel.overlays.default]; - nix.settings.substituters = [ - "https://attic.xuyh0120.win/lantian" - "https://cache.garnix.io" - ]; - nix.settings.trusted-public-keys = [ - "lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc=" - "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" - ]; boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-lts; - # enable hyper-v for guests - virtualisation.hypervGuest.enable = true; - boot.blacklistedKernelModules = ["hyperv_fb"]; - programs = { gamescope = { enable = true; @@ -77,7 +53,6 @@ enable = false; user = "sckova"; }; - defaultSession = "niri"; }; environment = { @@ -102,4 +77,27 @@ capSysAdmin = true; openFirewall = true; }; + + # virtualization settings + + virtualisation = { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; # Required for containers under podman-compose to be able to talk to each other. + }; + }; + + # enable hyper-v for guests + virtualisation.hypervGuest.enable = true; + boot.blacklistedKernelModules = ["hyperv_fb"]; + + boot.binfmt.emulatedSystems = [ + "aarch64-linux" + "riscv64-linux" + ]; + + # i don't even remember what this does or why i added it + systemd.tmpfiles.rules = ["L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware"]; } diff --git a/system/hosts/peach/default.nix b/system/hosts/peach/default.nix index 1fd6366..b241715 100644 --- a/system/hosts/peach/default.nix +++ b/system/hosts/peach/default.nix @@ -1,25 +1,10 @@ -{ - config, - pkgs, - lib, - catppuccin, - ... -}: { +{pkgs, ...}: { networking.hostName = "peach"; - boot.binfmt.emulatedSystems = [ - "x86_64-linux" - "riscv64-linux" - ]; - boot.kernelParams = ["apple_dcp.show_notch=1"]; catppuccin.accent = "peach"; - home-manager.users.sckova = { - imports = [catppuccin.homeModules.catppuccin]; - }; - hardware.asahi = { enable = true; setupAsahiSound = true; @@ -37,7 +22,7 @@ swapDevices = [ { device = "/swapfile"; - size = 16000; # 16GB + size = 8000; # 8GB } ]; diff --git a/system/hosts/vm-generic/default.nix b/system/hosts/vm-generic/default.nix index e28763f..0979703 100644 --- a/system/hosts/vm-generic/default.nix +++ b/system/hosts/vm-generic/default.nix @@ -1,18 +1,6 @@ -{ - config, - pkgs, - lib, - catppuccin, - ... -}: { +{catppuccin, ...}: { networking.hostName = "vm"; - # Enable emulation for architectures we're not currently running - boot.binfmt.emulatedSystems = - lib.optional (pkgs.stdenv.hostPlatform.system != "x86_64-linux") "x86_64-linux" - ++ lib.optional (pkgs.stdenv.hostPlatform.system != "aarch64-linux") "aarch64-linux" - ++ lib.optional (pkgs.stdenv.hostPlatform.system != "riscv64-linux") "riscv64-linux"; - catppuccin.accent = "green"; home-manager.users.sckova = { diff --git a/system/shell/fish.nix b/system/shell/fish.nix index a6b0b92..d65d384 100644 --- a/system/shell/fish.nix +++ b/system/shell/fish.nix @@ -1,4 +1,6 @@ {pkgs, ...}: { + # This following block taken from the wiki: + # https://nixos.wiki/wiki/Fish#Setting_fish_as_your_shell programs.bash = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] diff --git a/system/tailscale/default.nix b/system/tailscale/default.nix index 9ea4c31..3c99319 100644 --- a/system/tailscale/default.nix +++ b/system/tailscale/default.nix @@ -1,6 +1,8 @@ +# The goal of this configuration is to make it so you can write systemd units that +# can wait until tailscale is up and connected, by putting After=tailscaled.service +# in their unit file. # https://github.com/tailscale/tailscale/issues/11504#issuecomment-2113331262 { - config, pkgs, lib, ... diff --git a/system/widevine/default.nix b/system/widevine/default.nix index 6d013fe..127667e 100644 --- a/system/widevine/default.nix +++ b/system/widevine/default.nix @@ -1,7 +1,8 @@ +# https://github.com/nix-community/nixos-apple-silicon/issues/145 +# This should work with both x86_64 and aarch64. (hopefully) { config, lib, - pkgs, ... }: { nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [