diff --git a/flake.nix b/flake.nix index bc59f75..6b4ad9c 100644 --- a/flake.nix +++ b/flake.nix @@ -1,80 +1,21 @@ { - description = "Nest's Flake"; - inputs = { - nixpkgs.url = "nixpkgs/nixos-unstable"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + flake-parts.url = "github:hercules-ci/flake-parts"; + import-tree.url = "github:vic/import-tree"; - noctalia = { - url = "github:noctalia-dev/noctalia-shell"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + wrapper-modules.url = "github:BirdeeHub/nix-wrapper-modules"; + + aagl.url = "github:ezKEa/aagl-gtk-on-nix"; + aagl.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = { self, nixpkgs, ... }@inputs: - let - inherit (self) outputs; - - # Set the default user. Can be overitten on a system level - vars.user = "nest"; - - # List of system types our hosts use + outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" ]; - - # Generic NixOS config - mkNixOSConfig = { - path, - extraModules ? [], - vars, - }: - nixpkgs.lib.nixosSystem { - specialArgs = { - inherit inputs outputs vars; - }; - - modules = [ - ./nixos/common - path - ] - ++ extraModules; - }; - - # Additional modules for physical hosts - mkPhysicalNixOSConfig = path: - let - updatedVars = vars // { - hostType = "physical"; - hostName = "crow"; - }; - in - mkNixOSConfig { - vars = updatedVars; - path = path; - extraModules = [ ./hosts/physical ]; - }; - - # Additional modules for servers - # mkServerNixOSConfig = path: serverType: - # mkNixOSConfig { - # path = path; - # extraModules = [ - # ./hosts/server - # ./nixos/roles/server/${serverType} - # ./nixos/modules/backup - # ]; - # }; - in { - # Format our nix files using alejandra - formatter = nixpkgs.lib.genAttrs systems (system: nixpkgs.legacyPackages.${system}.alejandra); - - # Collection of all of our configs - nixosConfigurations = { - # =========== Desktops =========== - crow = mkPhysicalNixOSConfig ./hosts/physical/crow; - }; + imports = [ + inputs.wrapper-modules.flakeModules.default + (inputs.import-tree ./modules) + ]; }; } diff --git a/home-manager/common/default.nix b/home-manager/common/default.nix deleted file mode 100644 index 57e2d3e..0000000 --- a/home-manager/common/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - pkgs, - inputs, - vars, - ... -}: - -{ - home = { - username = "${vars.user}"; - homeDirectory = "/home/${vars.user}"; - }; - - home.packages = with pkgs; [ - lazygit - ]; - - programs.zsh = { - shellAliases = { - lg = "lazygit"; - }; - }; - - home.stateVersion = "26.05"; -} diff --git a/home-manager/roles/desktop/common/apps/alacritty.nix b/home-manager/roles/desktop/common/apps/alacritty.nix deleted file mode 100644 index 5e0c3f6..0000000 --- a/home-manager/roles/desktop/common/apps/alacritty.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - programs.alacritty = { - enable = true; - }; -} diff --git a/home-manager/roles/desktop/common/apps/brave.nix b/home-manager/roles/desktop/common/apps/brave.nix deleted file mode 100644 index 86d8f9a..0000000 --- a/home-manager/roles/desktop/common/apps/brave.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - programs.brave = { - enable = true; - }; -} diff --git a/home-manager/roles/desktop/common/apps/minecraft.nix b/home-manager/roles/desktop/common/apps/minecraft.nix deleted file mode 100644 index ceb08cd..0000000 --- a/home-manager/roles/desktop/common/apps/minecraft.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - prismlauncher - ]; -} diff --git a/home-manager/roles/desktop/common/apps/vesktop.nix b/home-manager/roles/desktop/common/apps/vesktop.nix deleted file mode 100644 index 4855f26..0000000 --- a/home-manager/roles/desktop/common/apps/vesktop.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - programs.vesktop = { - enable = true; - }; -} diff --git a/home-manager/roles/desktop/common/default.nix b/home-manager/roles/desktop/common/default.nix deleted file mode 100644 index 8c91202..0000000 --- a/home-manager/roles/desktop/common/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - imports = [ - ./apps - ]; - - # Setup user profile pic - home.file.".face" = { - source = ./nest.webp; - }; -} diff --git a/home-manager/roles/desktop/common/pfps/nest.webp b/home-manager/roles/desktop/common/pfps/nest.webp deleted file mode 100644 index c9052d1..0000000 Binary files a/home-manager/roles/desktop/common/pfps/nest.webp and /dev/null differ diff --git a/home-manager/roles/desktop/niri/default.nix b/home-manager/roles/desktop/niri/default.nix deleted file mode 100644 index fe253ac..0000000 --- a/home-manager/roles/desktop/niri/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ pkgs, vars, ... }: - -{ - imports = [ - ../common/apps - ../tiling - ]; - - xdg.configFile."niri/config.kdl".source = ../../../../hosts/${vars.hostType}/${vars.hostName}/host-configs/niri/config.kdl; - - programs.zsh = { - profileExtra = '' - if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then - exec gdm - fi - ''; - }; -} diff --git a/home-manager/roles/desktop/tiling/apps/default.nix b/home-manager/roles/desktop/tiling/apps/default.nix deleted file mode 100644 index 4652bcc..0000000 --- a/home-manager/roles/desktop/tiling/apps/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ - imports = [ - ./swaybg.nix - ./swaylock.nix - ./mako.nix - ./swayidle.nix - ./quickshell.nix - ./fuzzel.nix - ./noctalia.nix - ]; -} diff --git a/home-manager/roles/desktop/tiling/apps/fuzzel.nix b/home-manager/roles/desktop/tiling/apps/fuzzel.nix deleted file mode 100644 index 6355e4c..0000000 --- a/home-manager/roles/desktop/tiling/apps/fuzzel.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - programs.fuzzel = { - enable = true; - }; -} diff --git a/home-manager/roles/desktop/tiling/apps/mako.nix b/home-manager/roles/desktop/tiling/apps/mako.nix deleted file mode 100644 index d59db1d..0000000 --- a/home-manager/roles/desktop/tiling/apps/mako.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ pkgs, ... }: - -{ - services.mako = { - enable = true; - settings = { - default-timeout = 10000; - - font = "Maple Mono"; - background-color = "#8F56E1"; - text-color = "#D8CAB8"; - border-color = "#D8CAB8"; - }; - }; -} diff --git a/home-manager/roles/desktop/tiling/apps/noctalia.nix b/home-manager/roles/desktop/tiling/apps/noctalia.nix deleted file mode 100644 index ffb5675..0000000 --- a/home-manager/roles/desktop/tiling/apps/noctalia.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ pkgs, inputs, vars, ... }: - -{ - imports = [ - inputs.noctalia.homeModules.default - ]; - - programs.noctalia-shell = { - enable = true; - - settings = { - bar = { - density = "compact"; - position = "top"; - floating = true; - showCapsule = true; - widgets = { - left = [ - { - id = "ControlCenter"; - useDistroLogo = true; - } - { - id = "WiFi"; - } - { - id = "Bluetooth"; - } - { - id = "ActiveWindow"; - } - { - id = "MediaMini"; - } - ]; - center = [ - { - hideUnoccupied = false; - id = "Workspace"; - labelMode = "none"; - } - ]; - right = [ - { - id = "Volume"; - } - { - id = "Tray"; - } - { - id = "NotificationHistory"; - } - { - id = "Clock"; - formatHorizontal = "HH:mm"; - formatVertical = "HH mm"; - useMonospacedFont = true; - usePrimaryColor = true; - } - ]; - }; - }; - - colorSchemes.predefinedScheme = "Monochrome"; - general = { - avatarImage = "$NIX_FLAKE_PATH/home-manager/roles/common/${vars.user}.webp"; - radiusRatio = 0.2; - }; - - location = { - monthBeforeDay = true; - name = "Severn, Maryland"; - useFahrenheit = true; - use12hourFormat = true; - }; - - screenRecorder = { - directory = "$HOME/Videos/ScreenRecordings"; - }; - - wallpaper = { - directory = "$NIX_FLAKE_PATH/home-manager/roles/desktop/common/wallpapers"; - randomEnabled = true; - }; - - dock = { - enabled = false; - }; - - network = { - wifiEnabled = true; - }; - - templates = { - qt = true; - alactirry = true; - fuzzel = true; - discord = true; - niri = true; - }; - }; - }; -} diff --git a/home-manager/roles/desktop/tiling/apps/quickshell.nix b/home-manager/roles/desktop/tiling/apps/quickshell.nix deleted file mode 100644 index 2c3fa6b..0000000 --- a/home-manager/roles/desktop/tiling/apps/quickshell.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - programs.quickshell = { - enable = true; - }; -} diff --git a/home-manager/roles/desktop/tiling/apps/swaybg.nix b/home-manager/roles/desktop/tiling/apps/swaybg.nix deleted file mode 100644 index c621de7..0000000 --- a/home-manager/roles/desktop/tiling/apps/swaybg.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - swaybg - ]; -} diff --git a/home-manager/roles/desktop/tiling/apps/swayidle.nix b/home-manager/roles/desktop/tiling/apps/swayidle.nix deleted file mode 100644 index 3fa008b..0000000 --- a/home-manager/roles/desktop/tiling/apps/swayidle.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - services.swayidle = { - enable = true; - }; -} diff --git a/home-manager/roles/desktop/tiling/apps/swaylock.nix b/home-manager/roles/desktop/tiling/apps/swaylock.nix deleted file mode 100644 index 6134d4f..0000000 --- a/home-manager/roles/desktop/tiling/apps/swaylock.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - programs.swaylock = { - enable = true; - }; -} diff --git a/home-manager/roles/desktop/tiling/default.nix b/home-manager/roles/desktop/tiling/default.nix deleted file mode 100644 index c95f7ea..0000000 --- a/home-manager/roles/desktop/tiling/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - imports = [ ./apps ]; -} diff --git a/home-manager/roles/lens/default.nix b/home-manager/roles/lens/default.nix deleted file mode 100644 index 4ac6dd0..0000000 --- a/home-manager/roles/lens/default.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ pkgs, config, vars, ... }: -let - wrappedLens = pkgs.symlinkJoin { - name = "lens-wrapped"; - paths = [ pkgs.lens ]; - buildInputs = [ pkgs.makeWrapper ]; - postBuild = '' - wrapProgram $out/bin/lens-desktop \ - --add-flags "--user-data-dir=$HOME/.config/Lens-fixed" - ''; - }; -in -{ - home.packages = with pkgs; [ - wrappedLens - kubectl - kompose - ]; - - home.sessionVariables = { - KUBECONFIG = "$HOME/.kube/config"; - }; -} diff --git a/home-manager/roles/personal/default.nix b/home-manager/roles/personal/default.nix deleted file mode 100644 index b3e5bd8..0000000 --- a/home-manager/roles/personal/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - pkgs, - ... -}: - -{ - programs.git = { - enable = true; - settings = { - user = { - name = "KnightArtorias"; - email = "booksandpi@gmail.com"; - }; - - init.defaultBranch = "main"; - }; - }; -} diff --git a/hosts/physical/crow/default.nix b/hosts/physical/crow/default.nix deleted file mode 100644 index b11c9a9..0000000 --- a/hosts/physical/crow/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - vars, - inputs, - ... -}: - -{ - imports = [ - ./hardware-configuration.nix - ./system-configuration.nix - ../default.nix - - ../../../nixos/roles/physical/desktop/common - ../../../nixos/roles/physical/desktop/niri - ]; - - home-manager = { - users.${vars.user}.imports = [ - ../../../home-manager/common - ../../../home-manager/roles/personal - ../../../home-manager/roles/desktop/niri - ../../../home-manager/roles/lens - ]; - }; - - networking.hostName = "crow"; - networking.hostId = "0b83186c"; - - services.blueman.enable = true; -} diff --git a/hosts/physical/crow/hardware-configuration.nix b/hosts/physical/crow/hardware-configuration.nix deleted file mode 100644 index df48a3b..0000000 --- a/hosts/physical/crow/hardware-configuration.nix +++ /dev/null @@ -1,70 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/310d77f1-247d-4db9-9db0-be6b70483bd8"; - fsType = "ext4"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/9F36-9DE8"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; - - fileSystems."/mnt/steam" = - { device = "/dev/disk/by-uuid/f800bb63-5798-4faa-b2d2-50073215e391"; - fsType = "ext4"; - options = [ "users" "nofail" "exec" "defaults" ]; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/d7fbd2b2-c943-457b-afc1-ad355d30a5c2"; } - ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - - # Enable support for Corsair Scimitar - hardware.ckb-next = { - enable = true; - package = pkgs.ckb-next.overrideAttrs (old: { - cmakeFlags = (old.cmakeFlags or [ ]) ++ [ "-DUSE_DBUS_MENU=0" ]; - }); - }; - - # Enable bluetooth - hardware.bluetooth = { - enable = true; - powerOnBoot = true; - settings = { - General = { - # Shows battery charge of connected devices on supported - # Bluetooth adapters. Defaults to 'false'. - Experimental = true; - # When enabled other devices can connect faster to us, however - # the tradeoff is increased power consumption. Defaults to - # 'false'. - FastConnectable = true; - }; - Policy = { - # Enable all controllers when they are found. This includes - # adapters present on start as well as adapters that are plugged - # in later on. Defaults to 'true'. - AutoEnable = true; - }; - }; -}; -} diff --git a/hosts/physical/default.nix b/hosts/physical/default.nix deleted file mode 100644 index 186020a..0000000 --- a/hosts/physical/default.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ - pkgs, - inputs, - vars, - ... -}: - -{ - imports = [ - inputs.home-manager.nixosModules.home-manager - ../../nixos/modules/home-manager.nix - ]; - - # Enable networking - networking.networkmanager.enable = true; - - environment.systemPackages = with pkgs; [ - neovim - wget - pciutils - ]; - - fonts.packages = with pkgs; [ - nerd-fonts.fira-code - nerd-fonts.droid-sans-mono - noto-fonts - ]; - - services.openssh.enable = true; - services.getty.autologinUser = "${vars.user}"; - - boot = { - # "Silent" boot - initrd.verbose = false; - kernelParams = [ - "quiet" - "splash" - "boot.shell_on_fail" - "loglevel=3" - "rd.systemd.show_status=false" - "rd.udev.log_level=3" - "udev.log_priority=3" - ]; - }; -} diff --git a/hosts/server/default.nix b/hosts/server/default.nix deleted file mode 100644 index a85702a..0000000 --- a/hosts/server/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, ... }: - -{ - networking.networkmanager.enable = true; - - environment.systemPackages = with pkgs; [ - neovim - wget - curl - ]; - - service.openssh.enable = true; -} diff --git a/hosts/server/robin/default.nix b/hosts/server/robin/default.nix deleted file mode 100644 index b4b2f9e..0000000 --- a/hosts/server/robin/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ ... }: - -{ - imports = [ - ./hardware-configuration.nix - ./system-configuration.nix - ../default.nix - ]; - - networking.hostName = "robin"; - networking.hostId = ""; -} diff --git a/modules/features/git.nix b/modules/features/git.nix new file mode 100644 index 0000000..7f0659d --- /dev/null +++ b/modules/features/git.nix @@ -0,0 +1,16 @@ +{ + flake.nixosModules.git = { + programs.git = { + enable = true; + lfs.enable = true; + config = { + user = { + name = "KnightArtorias"; + email = "booksandpi@gmail.com"; + }; + + init.defaultBranch = "main"; + }; + }; + }; +} diff --git a/modules/features/hsr.nix b/modules/features/hsr.nix new file mode 100644 index 0000000..08422d5 --- /dev/null +++ b/modules/features/hsr.nix @@ -0,0 +1,9 @@ +{ inputs, ... }: { + flake.nixosModules.hsr = { config, pkgs, lib, ... }: { + imports = [ inputs.aagl.nixosModules.default ]; + + nix.settings = inputs.aagl.nixConfig; + + programs.honkers-railway-launcher.enable = true; + }; +} diff --git a/modules/features/sddm.nix b/modules/features/sddm.nix new file mode 100644 index 0000000..7321071 --- /dev/null +++ b/modules/features/sddm.nix @@ -0,0 +1,47 @@ +{ + flake.nixosModules.sddm = { pkgs, ... }: + let + custom-sddm-astronaut = pkgs.sddm-astronaut.override { + embeddedTheme= "pixel_sakura"; + }; + + westonIni = pkgs.writeText "weston.ini" '' + [output] + name=DP-2 + mode=2560x1440@144 + + [output] + name=DP-1 + mode=off + + [output] + name=HDMI-A-1 + mode=off + ''; + in + { + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + package = pkgs.kdePackages.sddm; # Enforce qt6 + + theme = "sddm-astronaut-theme"; + extraPackages = with pkgs; [ + custom-sddm-astronaut + kdePackages.qtsvg + kdePackages.qtmultimedia + kdePackages.qtvirtualkeyboard + ]; + + settings = { + Wayland = { + CompositorCommand = "${pkgs.weston}/bin/weston --shell=kiosk --config=${westonIni}"; + }; + }; + }; + + environment.systemPackages = with pkgs; [ + custom-sddm-astronaut + ]; + }; +} diff --git a/modules/features/tiling/fuzzel.nix b/modules/features/tiling/fuzzel.nix new file mode 100644 index 0000000..451441d --- /dev/null +++ b/modules/features/tiling/fuzzel.nix @@ -0,0 +1,15 @@ +{ + flake.nixosModules.fuzzel = { pkgs, ... }: { + services.mako = { + enable = true; + settings = { + default-timeout = 10000; + + font = "Maple Mono"; + background-color = "#8F56E1"; + text-color = "#D8CAB8"; + border-color = "#D8CAB8"; + }; + }; + }; +} diff --git a/modules/features/tiling/niri.nix b/modules/features/tiling/niri.nix new file mode 100644 index 0000000..6ddb5f8 --- /dev/null +++ b/modules/features/tiling/niri.nix @@ -0,0 +1,297 @@ +{ self, inputs, ... }: { + perSystem = { pkgs, lib, self', ... }: { + packages.myNiri = inputs.wrapper-modules.wrappers.niri.wrap { + inherit pkgs; + settings = { + prefer-no-csd = {}; + + spawn-sh-at-startup = [ + "ckb-next -b" + (lib.getExe self'.packages.myNoctalia) + + # Wallpapers + "${pkgs.mpvpaper}/bin/mpvpaper -n 900 -o '--hwdec=auto --no-audio --loop-playlist shuffle --panscan=1.0 --scale=nearest' ALL ${./wallpapers}" + ]; + + screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; + + layout = { + gaps = 5; + center-focused-column = "never"; + + default-column-width = { + proportion = 0.5; + }; + + focus-ring = { + width = 1.5; + active-color = "#7aa2f7"; + inactive-color = "#a9b1d6"; + }; + + border = { + off = {}; + width = 4; + active-color = "#ffc87f"; + inactive-color = "#505050"; + urgent-color = "#9b0000"; + }; + }; + + outputs = { + "HDMI-A-1" = { + mode = "1920x1080@60.00"; + position = _: { + props = { + x = 0; + y = 180; + }; + }; + }; + + "DP-2" = { + mode = "2560x1440@144.00"; + position = _: { + props = { + x = 1920; + y = 0; + }; + }; + variable-refresh-rate = {}; + }; + + "DP-1" = { + mode = "1680x1050@60.00"; + position = _: { + props = { + x = 4480; + y = 195; + }; + }; + }; + }; + + input = { + keyboard = { + numlock = {}; + repeat-rate = 35; + repeat-delay = 500; + }; + + touchpad = { + tap = {}; + natural-scroll = {}; + }; + + focus-follows-mouse = {}; + }; + + window-rules = [ + { + matches = [ { app-id = "^brave-browser$"; title = "^Picture-in-Picture$"; } ]; + open-floating = true; + } + { + matches = [ + { app-id = "^org\\.keepassxc\\.KeePassXC$"; } + { app-id = "^org\\.gnome\\.World\\.Secrets$"; } + ]; + block-out-from = "screen-capture"; + } + { + geometry-corner-radius = 12; + clip-to-geometry = true; + } + { + matches = [ { app-id = "^brave-browser$"; } ]; + open-maximized = true; + } + { + matches = [ { app-id = "^vesktop$"; } ]; + open-maximized = true; + } + { + matches = [ { app-id = "^steam$"; } ]; + open-maximized = true; + } + ]; + + binds = { + "Mod+Shift+Slash".show-hotkey-overlay = {}; + + "Mod+T".spawn = "alacritty"; + "Mod+D".spawn = "fuzzel"; + "Super+Ctrl+L".spawn = "swaylock"; + "Super+Alt+S".spawn = [ "sh" "-c" "pkill orca || exec orca" ]; + + # Media & Volume Controls + "XF86AudioRaiseVolume".spawn = [ "sh" "-c" "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0" ]; + "XF86AudioLowerVolume".spawn = [ "sh" "-c" "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-" ]; + "XF86AudioMute".spawn = [ "sh" "-c" "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ]; + "XF86AudioMicMute".spawn = [ "sh" "-c" "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" ]; + "XF86AudioPlay".spawn = [ "sh" "-c" "playerctl play-pause" ]; + "XF86AudioStop".spawn = [ "sh" "-c" "playerctl stop" ]; + "XF86AudioPrev".spawn = [ "sh" "-c" "playerctl previous" ]; + "XF86AudioNext".spawn = [ "sh" "-c" "playerctl next" ]; + + # Brightness Controls + "XF86MonBrightnessUp".spawn = [ "brightnessctl" "--class=backlight" "set" "+10%" ]; + "XF86MonBrightnessDown".spawn = [ "brightnessctl" "--class=backlight" "set" "10%-" ]; + + # Window & Layout Navigation + "Mod+O".toggle-overview = {}; + "Mod+Q".close-window = {}; + + "Mod+Left".focus-column-left = {}; + "Mod+Down".focus-window-down = {}; + "Mod+Up".focus-window-up = {}; + "Mod+Right".focus-column-right = {}; + + "Mod+H".focus-column-left = {}; + "Mod+J".focus-window-down = {}; + "Mod+K".focus-window-up = {}; + "Mod+L".focus-column-right = {}; + + "Mod+Ctrl+Left".move-column-left = {}; + "Mod+Ctrl+Down".move-window-down = {}; + "Mod+Ctrl+Up".move-window-up = {}; + "Mod+Ctrl+Right".move-column-right = {}; + + "Mod+Ctrl+H".move-column-left = {}; + "Mod+Ctrl+J".move-window-down = {}; + "Mod+Ctrl+K".move-window-up = {}; + "Mod+Ctrl+L".move-column-right = {}; + + "Mod+Home".focus-column-first = {}; + "Mod+End".focus-column-last = {}; + "Mod+Ctrl+Home".move-column-to-first = {}; + "Mod+Ctrl+End".move-column-to-last = {}; + + # Monitor Navigation + "Mod+Shift+Left".focus-monitor-left = {}; + "Mod+Shift+Down".focus-monitor-down = {}; + "Mod+Shift+Up".focus-monitor-up = {}; + "Mod+Shift+Right".focus-monitor-right = {}; + + "Mod+Shift+H".focus-monitor-left = {}; + "Mod+Shift+J".focus-monitor-down = {}; + "Mod+Shift+K".focus-monitor-up = {}; + "Mod+Shift+L".focus-monitor-right = {}; + + "Mod+Shift+Ctrl+Left".move-column-to-monitor-left = {}; + "Mod+Shift+Ctrl+Down".move-column-to-monitor-down = {}; + "Mod+Shift+Ctrl+Up".move-column-to-monitor-up = {}; + "Mod+Shift+Ctrl+Right".move-column-to-monitor-right = {}; + + "Mod+Shift+Ctrl+H".move-column-to-monitor-left = {}; + "Mod+Shift+Ctrl+J".move-column-to-monitor-down = {}; + "Mod+Shift+Ctrl+K".move-column-to-monitor-up = {}; + "Mod+Shift+Ctrl+L".move-column-to-monitor-right = {}; + + # Workspace Navigation + "Mod+Page_Down".focus-workspace-down = {}; + "Mod+Page_Up".focus-workspace-up = {}; + "Mod+U".focus-workspace-down = {}; + "Mod+I".focus-workspace-up = {}; + + "Mod+Ctrl+Page_Down".move-column-to-workspace-down = {}; + "Mod+Ctrl+Page_Up".move-column-to-workspace-up = {}; + "Mod+Ctrl+U".move-column-to-workspace-down = {}; + "Mod+Ctrl+I".move-column-to-workspace-up = {}; + + "Mod+Shift+Page_Down".move-workspace-down = {}; + "Mod+Shift+Page_Up".move-workspace-up = {}; + "Mod+Shift+U".move-workspace-down = {}; + "Mod+Shift+I".move-workspace-up = {}; + + # Scrolling / Mouse Wheel + "Mod+WheelScrollDown".focus-workspace-down = {}; + "Mod+WheelScrollUp".focus-workspace-up = {}; + "Mod+Ctrl+WheelScrollDown".move-column-to-workspace-down = {}; + "Mod+Ctrl+WheelScrollUp".move-column-to-workspace-up = {}; + + "Mod+WheelScrollRight".focus-column-right = {}; + "Mod+WheelScrollLeft".focus-column-left = {}; + "Mod+Ctrl+WheelScrollRight".move-column-right = {}; + "Mod+Ctrl+WheelScrollLeft".move-column-left = {}; + + "Mod+Shift+WheelScrollDown".focus-column-right = {}; + "Mod+Shift+WheelScrollUp".focus-column-left = {}; + "Mod+Ctrl+Shift+WheelScrollDown".move-column-right = {}; + "Mod+Ctrl+Shift+WheelScrollUp".move-column-left = {}; + + # Numbered Workspaces + "Mod+1".focus-workspace = 1; + "Mod+2".focus-workspace = 2; + "Mod+3".focus-workspace = 3; + "Mod+4".focus-workspace = 4; + "Mod+5".focus-workspace = 5; + "Mod+6".focus-workspace = 6; + "Mod+7".focus-workspace = 7; + "Mod+8".focus-workspace = 8; + "Mod+9".focus-workspace = 9; + + "Mod+Ctrl+1".move-column-to-workspace = 1; + "Mod+Ctrl+2".move-column-to-workspace = 2; + "Mod+Ctrl+3".move-column-to-workspace = 3; + "Mod+Ctrl+4".move-column-to-workspace = 4; + "Mod+Ctrl+5".move-column-to-workspace = 5; + "Mod+Ctrl+6".move-column-to-workspace = 6; + "Mod+Ctrl+7".move-column-to-workspace = 7; + "Mod+Ctrl+8".move-column-to-workspace = 8; + "Mod+Ctrl+9".move-column-to-workspace = 9; + + # Window Layout Adjustments + "Mod+BracketLeft".consume-or-expel-window-left = {}; + "Mod+BracketRight".consume-or-expel-window-right = {}; + "Mod+Comma".consume-window-into-column = {}; + "Mod+Period".expel-window-from-column = {}; + + "Mod+R".switch-preset-column-width = {}; + "Mod+Shift+R".switch-preset-window-height = {}; + "Mod+Ctrl+R".reset-window-height = {}; + "Mod+F".maximize-column = {}; + "Mod+Shift+F".fullscreen-window = {}; + "Mod+Ctrl+F".expand-column-to-available-width = {}; + "Mod+C".center-column = {}; + "Mod+Ctrl+C".center-visible-columns = {}; + + "Mod+Minus".set-column-width = "-10%"; + "Mod+Equal".set-column-width = "+10%"; + "Mod+Shift+Minus".set-window-height = "-10%"; + "Mod+Shift+Equal".set-window-height = "+10%"; + + "Mod+V".toggle-window-floating = {}; + "Mod+Shift+V".switch-focus-between-floating-and-tiling = {}; + "Mod+W".toggle-column-tabbed-display = {}; + + # Screenshots + "Print".screenshot = {}; + "Ctrl+Print".screenshot-screen = {}; + "Alt+Print".screenshot-window = {}; + + # System Controls + "Mod+Escape".toggle-keyboard-shortcuts-inhibit = {}; + "Mod+Shift+E".quit = {}; + "Ctrl+Alt+Delete".quit = {}; + "Mod+Shift+P".power-off-monitors = {}; + }; + }; + }; + }; + + flake.nixosModules.niri = { pkgs, lib, ... }: { + programs.niri = { + enable = true; + package = self.packages.${pkgs.stdenv.hostPlatform.system}.myNiri; + }; + + security.polkit.enable = true; + services.gnome.gnome-keyring.enable = true; + + environment.systemPackages = with pkgs; [ + xwayland-satellite + mpvpaper + ]; + }; +} diff --git a/modules/features/tiling/noctalia.nix b/modules/features/tiling/noctalia.nix new file mode 100644 index 0000000..8223ffd --- /dev/null +++ b/modules/features/tiling/noctalia.nix @@ -0,0 +1,69 @@ +{ self, inputs, ... }: { + perSystem = { pkgs, ... }: { + packages.myNoctalia = inputs.wrapper-modules.wrappers.noctalia-shell.wrap { + inherit pkgs; + settings = { + bar = { + density = "compact"; + floating = true; + position = "top"; + showCapsule = true; + widgets = { + center = [ + { hideUnoccupied = false; id = "Workspace"; labelMode = "none"; } + ]; + left = [ + { id = "ControlCenter"; useDistroLogo = true; } + { id = "WiFi"; } + { id = "Bluetooth"; } + { id = "ActiveWindow"; } + { id = "MediaMini"; } + ]; + right = [ + { id = "Volume"; } + { id = "Tray"; } + { id = "NotificationHistory"; } + { + formatHorizontal = "HH:mm"; + formatVertical = "HH mm"; + id = "Clock"; + useMonospacedFont = true; + usePrimaryColor = true; + } + ]; + }; + }; + colorSchemes = { + predefinedScheme = "Monochrome"; + }; + dock = { + enabled = false; + }; + # Using mpvpaper + wallpaper = { + enabled = false; + + }; + location = { + monthBeforeDay = true; + name = "Severn, Maryland"; + use12hourFormat = true; + useFahrenheit = true; + }; + network = { + wifiEnabled = true; + }; + screenRecorder = { + directory = "$HOME/Videos/ScreenRecordings"; + }; + templates = { + alactirry = true; + discord = true; + fuzzel = true; + niri = true; + qt = true; + }; + }; + }; + }; +} diff --git a/modules/features/tiling/wallpapers/cyberpunk-bar-pixel-moewalls-com.mp4 b/modules/features/tiling/wallpapers/cyberpunk-bar-pixel-moewalls-com.mp4 new file mode 100644 index 0000000..cc86693 Binary files /dev/null and b/modules/features/tiling/wallpapers/cyberpunk-bar-pixel-moewalls-com.mp4 differ diff --git a/modules/features/tiling/wallpapers/kita-ikuyo-sleeping-pixel-bocchi-the-rock-moewalls-com.mp4 b/modules/features/tiling/wallpapers/kita-ikuyo-sleeping-pixel-bocchi-the-rock-moewalls-com.mp4 new file mode 100644 index 0000000..899c091 Binary files /dev/null and b/modules/features/tiling/wallpapers/kita-ikuyo-sleeping-pixel-bocchi-the-rock-moewalls-com.mp4 differ diff --git a/modules/features/tiling/wallpapers/lofi-girl-reading-book-while-its-raining-outside-pixel-moewalls-com.mp4 b/modules/features/tiling/wallpapers/lofi-girl-reading-book-while-its-raining-outside-pixel-moewalls-com.mp4 new file mode 100644 index 0000000..7633725 Binary files /dev/null and b/modules/features/tiling/wallpapers/lofi-girl-reading-book-while-its-raining-outside-pixel-moewalls-com.mp4 differ diff --git a/modules/features/tiling/wallpapers/mountain-motel-pixel-moewalls-com.mp4 b/modules/features/tiling/wallpapers/mountain-motel-pixel-moewalls-com.mp4 new file mode 100644 index 0000000..0e94047 Binary files /dev/null and b/modules/features/tiling/wallpapers/mountain-motel-pixel-moewalls-com.mp4 differ diff --git a/modules/features/tiling/wallpapers/sunset-city-street-pixel-moewalls-com.mp4 b/modules/features/tiling/wallpapers/sunset-city-street-pixel-moewalls-com.mp4 new file mode 100644 index 0000000..748dd52 Binary files /dev/null and b/modules/features/tiling/wallpapers/sunset-city-street-pixel-moewalls-com.mp4 differ diff --git a/modules/features/zsh.nix b/modules/features/zsh.nix new file mode 100644 index 0000000..542fa1e --- /dev/null +++ b/modules/features/zsh.nix @@ -0,0 +1,34 @@ +{ + flake.nixosModules.zsh = { pkgs, ... }: { + environment.systemPackages = with pkgs; [ + zsh + oh-my-zsh + ]; + + environment.variables = { + NIX_FLAKE_PATH = "$HOME/.nix/"; + }; + + programs.zsh = { + enable = true; + enableBashCompletion = true; + enableCompletion = true; + autosuggestions.enable = true; + + ohMyZsh = { + enable = true; + theme = "bira"; + plugins = [ + "sudo" + "git" + ]; + }; + + shellAliases = { + ll = "ls -la"; + update = "sudo nix flake update --flake $NIX_FLAKE_PATH && sudo nixos-rebuild switch --upgrade-all --flake $NIX_FLAKE_PATH#$HOSTNAME"; + rebuild = "sudo nixos-rebuild switch --flake $NIX_FLAKE_PATH#$HOSTNAME"; + }; + }; + }; +} diff --git a/modules/hosts/crow/configuration.nix b/modules/hosts/crow/configuration.nix new file mode 100644 index 0000000..4933a88 --- /dev/null +++ b/modules/hosts/crow/configuration.nix @@ -0,0 +1,100 @@ +{ self, inputs, ... }: { + flake.nixosModules.crowConfiguration = { pkgs, ... }: { + imports = [ + self.nixosModules.crowHardware + self.nixosModules.nest + + self.nixosModules.niri + self.nixosModules.git + self.nixosModules.sddm + self.nixosModules.hsr + self.nixosModules.zsh + ]; + + environment.systemPackages = with pkgs; [ + pavucontrol + bolt-launcher + wine + usbutils + virt-manager + prismlauncher + kubectl + kompose + lens + htop + zip + unzip + dig + traceroute + neovim + wget + pciutils + alacritty + brave + lutris + vesktop + steam + fuzzel + mako + ]; + + nixpkgs.overlays = [ + # Open LDAP currently has a problem + # with one of the tests. Just disable it + (final: prev: { + openldap = prev.openldap.overrideAttrs (oldAttrs: { + doCheck = false; + }); + }) + ]; + + networking.networkmanager.enable = true; + networking.hostName = "crow"; + + fonts.packages = with pkgs; [ + nerd-fonts.fira-code + nerd-fonts.droid-sans-mono + noto-fonts + ]; + + services = { + openssh.enable = true; + blueman.enable = true; + }; + + boot = { + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + timeout = 1; + }; + + kernelPackages = pkgs.linuxPackages_latest; + kernelModules = [ "amdgpu" ]; + + # "Silent" boot + initrd.verbose = false; + kernelParams = [ + "quiet" + "splash" + "boot.shell_on_fail" + "loglevel=3" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + ]; + }; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.auto-optimise-store = true; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + + nixpkgs.config.allowUnfree = true; + + system.stateVersion = "26.05"; + }; +} diff --git a/modules/hosts/crow/default.nix b/modules/hosts/crow/default.nix new file mode 100644 index 0000000..0003377 --- /dev/null +++ b/modules/hosts/crow/default.nix @@ -0,0 +1,5 @@ +{ self, inputs, ... }: { + flake.nixosConfigurations.crow = inputs.nixpkgs.lib.nixosSystem { + modules = [ self.nixosModules.crowConfiguration ]; + }; +} diff --git a/modules/hosts/crow/hardware.nix b/modules/hosts/crow/hardware.nix new file mode 100644 index 0000000..235fd11 --- /dev/null +++ b/modules/hosts/crow/hardware.nix @@ -0,0 +1,35 @@ +{ self, inputs, ... }: { + flake.nixosModules.crowHardware = { config, lib, pkgs, modulesPath, ... }: { + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/310d77f1-247d-4db9-9db0-be6b70483bd8"; + fsType = "ext4"; + }; + + fileSystems."/mnt/steam" = + { device = "/dev/disk/by-uuid/f800bb63-5798-4faa-b2d2-50073215e391"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/9F36-9DE8"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/d7fbd2b2-c943-457b-afc1-ad355d30a5c2"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + }; +} diff --git a/modules/users/nest.nix b/modules/users/nest.nix new file mode 100644 index 0000000..77851ed --- /dev/null +++ b/modules/users/nest.nix @@ -0,0 +1,10 @@ +{ + flake.nixosModules.nest = { pkgs, ... }: { + users.users.nest = { + description = "nest"; + isNormalUser = true; + extraGroups = [ "wheel" "network" ]; + shell = pkgs.zsh; + }; + }; +} diff --git a/nixos/common/default.nix b/nixos/common/default.nix deleted file mode 100644 index 56a5fff..0000000 --- a/nixos/common/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - inputs, - pkgs, - vars, - ... -}: - -{ - imports= [ - ../../users/${vars.user}.nix - ../modules/zsh.nix - ]; - - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - nix.settings.auto-optimise-store = true; - - nixpkgs.config.allowUnfree = true; - - environment.systemPackages = with pkgs; [ - tree - htop - dig - traceroute - zip - unzip - ]; - - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; - }; -} - diff --git a/nixos/modules/home-manager.nix b/nixos/modules/home-manager.nix deleted file mode 100644 index ef082b4..0000000 --- a/nixos/modules/home-manager.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - inputs, - vars, - ... -}: - -{ - home-manager = { - backupFileExtension = "backup"; - - extraSpecialArgs = { - inherit inputs vars; - }; - - useGlobalPkgs = true; - useUserPackages = true; - - # Common home-manager imports - users.${vars.user}.imports = [ - ../../home-manager/common - ]; - }; -} diff --git a/nixos/modules/zsh.nix b/nixos/modules/zsh.nix deleted file mode 100644 index 3edee8b..0000000 --- a/nixos/modules/zsh.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ pkgs, vars, ... }: { - - environment.systemPackages = with pkgs; [ - zsh - oh-my-zsh - ]; - - environment.variables = { - NIX_FLAKE_PATH = "$HOME/.nix/"; - }; - - programs.zsh = { - enable = true; - enableBashCompletion = true; - enableCompletion = true; - autosuggestions.enable = true; - - ohMyZsh = { - enable = true; - theme = "bira"; - plugins = [ - "sudo" - "git" - ]; - }; - - shellAliases = { - ll = "ls -la"; - update = "sudo nix flake update --flake $NIX_FLAKE_PATH && sudo nixos-rebuild switch --upgrade-all --flake $NIX_FLAKE_PATH#${vars.hostName}"; - rebuild = "sudo nixos-rebuild switch --flake $NIX_FLAKE_PATH#${vars.hostName}"; - }; - }; - - users.defaultUserShell = pkgs.zsh; -} diff --git a/nixos/roles/physical/desktop/common/apps/bolt-launcher.nix b/nixos/roles/physical/desktop/common/apps/bolt-launcher.nix deleted file mode 100644 index e11380d..0000000 --- a/nixos/roles/physical/desktop/common/apps/bolt-launcher.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - bolt-launcher - ]; -} diff --git a/nixos/roles/physical/desktop/common/apps/pavucontrol.nix b/nixos/roles/physical/desktop/common/apps/pavucontrol.nix deleted file mode 100644 index d3071d7..0000000 --- a/nixos/roles/physical/desktop/common/apps/pavucontrol.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - pavucontrol - ]; -} diff --git a/nixos/roles/physical/desktop/common/apps/steam.nix b/nixos/roles/physical/desktop/common/apps/steam.nix deleted file mode 100644 index 9b3d4ef..0000000 --- a/nixos/roles/physical/desktop/common/apps/steam.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - programs.steam = { - enable = true; - }; -} diff --git a/nixos/roles/physical/desktop/common/apps/usbutils.nix b/nixos/roles/physical/desktop/common/apps/usbutils.nix deleted file mode 100644 index 48a1d64..0000000 --- a/nixos/roles/physical/desktop/common/apps/usbutils.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - usbutils - ]; -} diff --git a/nixos/roles/physical/desktop/common/apps/virt-manager.nix b/nixos/roles/physical/desktop/common/apps/virt-manager.nix deleted file mode 100644 index 4a1f009..0000000 --- a/nixos/roles/physical/desktop/common/apps/virt-manager.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ pkgs, vars, ... }: - -{ - environment.systemPackages = with pkgs; [ - virt-manager - virt-viewer - spice - spice-gtk - spice-protocol - ]; - - programs.dconf.enable = true; - programs.virt-manager.enable = true; - - virtualisation = { - spiceUSBRedirection.enable = true; - libvirtd.enable = true; - }; - - users.groups.libvirtd.members = ["${vars.user}"]; -} diff --git a/nixos/roles/physical/desktop/common/apps/wine.nix b/nixos/roles/physical/desktop/common/apps/wine.nix deleted file mode 100644 index 17de952..0000000 --- a/nixos/roles/physical/desktop/common/apps/wine.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs; [ - wineWow64Packages.stable - wineWow64Packages.waylandFull - winetricks - ]; -} diff --git a/nixos/roles/physical/desktop/common/default.nix b/nixos/roles/physical/desktop/common/default.nix deleted file mode 100644 index 3631cb5..0000000 --- a/nixos/roles/physical/desktop/common/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - imports = [ - ./apps - ]; -} diff --git a/nixos/roles/physical/desktop/niri/default.nix b/nixos/roles/physical/desktop/niri/default.nix deleted file mode 100644 index 903bc77..0000000 --- a/nixos/roles/physical/desktop/niri/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ vars, pkgs, ... }: { - programs.niri.enable = true; - - security.polkit.enable = true; - security.pam.services.swaylock = {}; - - services.gnome.gnome-keyring.enable = true; - - services.displayManager = { - gdm.enable = true; - autoLogin = { - enable = true; - user = "${vars.user}"; - }; - }; - - environment.systemPackages = with pkgs; [ - xwayland-satellite - ]; -} diff --git a/users/nest.nix b/users/nest.nix deleted file mode 100644 index 8313231..0000000 --- a/users/nest.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - users.users.nest = { - description = "nest"; - isNormalUser = true; - extraGroups = [ "wheel" "network" ]; - }; -} -