diff --git a/flake.lock b/flake.lock index ac15c17..cfc596a 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1790734419, - "narHash": "sha256-n7wew722m1OTBT9DOIMxNX/NF4zfsSUABAO5eW3wikE=", + "lastModified": 1792507013, + "narHash": "sha256-8tKjSQajD3mUND1GaAuaWTcuyUpgcGsh5V+l4ibzC7U=", "owner": "ryantm", "repo": "agenix", - "rev": "3daa710894355fa2fad8243380af373a2b4046ef", + "rev": "5e5b88a0c8e56f291a108c2fe9934054d9745b2e", "type": "github" }, "original": { @@ -123,6 +123,27 @@ } }, "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "hermes-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1790898470, + "narHash": "sha256-zTwuwezD0w3hpga6a6P8emidzAZFyWqlNeRBlpWOOl8=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "024633cd702b10285db5cb19b40ad48d2399ba60", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { "inputs": { "nixpkgs-lib": [ "stylix", @@ -178,6 +199,34 @@ "type": "gitlab" } }, + "hermes-agent": { + "inputs": { + "flake-parts": "flake-parts_2", + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ], + "npm-lockfile-fix": "npm-lockfile-fix", + "pyproject-build-systems": "pyproject-build-systems", + "pyproject-nix": "pyproject-nix", + "uv2nix": "uv2nix" + }, + "locked": { + "lastModified": 1793005886, + "narHash": "sha256-gZD8QVfZU4d19WbpGU1d3a1N4iJ0w1b916b/V+P0+cc=", + "owner": "NousResearch", + "repo": "hermes-agent", + "rev": "9b904dcc22c23fe8b82834339bbdd96495072e59", + "type": "github" + }, + "original": { + "owner": "NousResearch", + "repo": "hermes-agent", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -185,11 +234,11 @@ ] }, "locked": { - "lastModified": 1792098797, - "narHash": "sha256-u4DIIZgznEGzByxXrxWCXK19VcMtTBmi/M9gZ7Jk9bM=", + "lastModified": 1792896866, + "narHash": "sha256-/0tELNnhdSnP+bHSdWiEe6KpfSwi6WrTnT9cm/jNkjA=", "owner": "nix-community", "repo": "home-manager", - "rev": "640725978b99076e18e069f6e7d2959124584f8f", + "rev": "c216bf5a1f173b0481bd5c8c489ebe5595ecc68c", "type": "github" }, "original": { @@ -289,11 +338,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1792277718, - "narHash": "sha256-Nv32eZ+x7qr/yKofkemv1O2ImnXkUpFQgq71u6c6Wi8=", + "lastModified": 1792984624, + "narHash": "sha256-i8nr7pMfov5q0W5m1UCeNYGClbA4hdbmTwa+OkumdlY=", "owner": "4evy", "repo": "nixcord", - "rev": "f4f803048d4bb6bc296fc4bdbd8620ff63fe100f", + "rev": "63e33cd00b08ef49b6623a1b6f9f27f69049d1a9", "type": "github" }, "original": { @@ -304,11 +353,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1792094642, - "narHash": "sha256-zp8ToDMnqZcu4o4IH9pdwXFXGp7yLm/M0dEnNWnyd7I=", + "lastModified": 1792773339, + "narHash": "sha256-rZLrzrC6i+jnTAlvPZHogKDulY7WWDEv9hJeHieO7Zw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fe13242281a67641c0102cdb1087f0ebe586c7df", + "rev": "3ec636362e1816bc2f0888fa0fa2c69f1bc9e504", "type": "github" }, "original": { @@ -359,6 +408,27 @@ "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.zst" } }, + "npm-lockfile-fix": { + "inputs": { + "nixpkgs": [ + "hermes-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775903712, + "narHash": "sha256-2GV79U6iVH4gKAPWYrxUReB0S41ty/Y3dBLquU8AlaA=", + "owner": "jeslie0", + "repo": "npm-lockfile-fix", + "rev": "c6093acb0c0548e0f9b8b3d82918823721930fe8", + "type": "github" + }, + "original": { + "owner": "jeslie0", + "repo": "npm-lockfile-fix", + "type": "github" + } + }, "nur": { "inputs": { "flake-parts": [ @@ -384,18 +454,91 @@ "type": "github" } }, + "pyproject-build-systems": { + "inputs": { + "nixpkgs": [ + "hermes-agent", + "nixpkgs" + ], + "pyproject-nix": [ + "hermes-agent", + "pyproject-nix" + ], + "uv2nix": [ + "hermes-agent", + "uv2nix" + ] + }, + "locked": { + "lastModified": 1792499785, + "narHash": "sha256-mGOkvueuMGSRiD75ccxFzfEvSlIU9ztjFluHMKOtogY=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "a17819c85163988e063806ffc4f6d2716bc8ead8", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, + "pyproject-nix": { + "inputs": { + "nixpkgs": [ + "hermes-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1791657700, + "narHash": "sha256-vcCAvhtA7hG+/gOge29hYHy7I/dLkIsr5nLx4sFEQic=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "ddc400a6883b042646d0940e65971bb7f7e96107", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, "root": { "inputs": { "agenix": "agenix", "flake-parts": "flake-parts", + "hermes-agent": "hermes-agent", "home-manager": "home-manager", "import-tree": "import-tree", "nix-easyroam": "nix-easyroam", "nixcord": "nixcord", "nixpkgs": "nixpkgs", + "spicetify-nix": "spicetify-nix", "stylix": "stylix" } }, + "spicetify-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1792919014, + "narHash": "sha256-gJ8uPmQFhJ98X+VWPpD+o0tnQ0nJjbG+Z3QDHcSJKw0=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "f6eb8135c060130150c8fbcc6b7cf5e22e5179d8", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, "stylix": { "inputs": { "base16": "base16", @@ -403,24 +546,24 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", - "flake-parts": "flake-parts_2", + "flake-parts": "flake-parts_3", "gnome-shell": "gnome-shell", "nixpkgs": [ "nixpkgs" ], "nur": "nur", - "systems": "systems", + "systems": "systems_2", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", "tinted-tmux": "tinted-tmux", "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1791574276, - "narHash": "sha256-UMnLnZ3JlA7UTBNNNx1rNsXYoPP/cirXLCKGiQ/yDx8=", + "lastModified": 1792920263, + "narHash": "sha256-2pkE97wOXAYIn2/Nhs9y+iR0qVT+g/3UtukXdkywxXc=", "owner": "nix-community", "repo": "stylix", - "rev": "2856c4c6a845b9bec98828ef197abe176e4806bb", + "rev": "3e27b6c499e507df6e3bb8eca3614f5c95e28140", "type": "github" }, "original": { @@ -430,6 +573,21 @@ } }, "systems": { + "locked": { + "lastModified": 1791244623, + "narHash": "sha256-uuanbkFk8a313Zfrxdcz8Us/yQtaxNnKJtX8v0ZPpd8=", + "owner": "nix-systems", + "repo": "default", + "rev": "d36eeed142f88b5a636f2e3856a53c61654cf29b", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { "locked": { "lastModified": 1774449309, "narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=", @@ -529,6 +687,31 @@ "repo": "treefmt-nix", "type": "github" } + }, + "uv2nix": { + "inputs": { + "nixpkgs": [ + "hermes-agent", + "nixpkgs" + ], + "pyproject-nix": [ + "hermes-agent", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1792666911, + "narHash": "sha256-UWo7wDPi00YXOI1Io7g4vGKuCSPJ863kHJVDzsgqtoM=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "0fdaa03ea3c3c16dbb1fe4d69108f07227a4b42d", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index e1e33f8..b743e19 100644 --- a/flake.nix +++ b/flake.nix @@ -24,11 +24,22 @@ url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; + spicetify-nix = { + url = "github:Gerg-L/spicetify-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + hermes-agent = { + url = "github:NousResearch/hermes-agent"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; }; - outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { - imports = [ - inputs.home-manager.flakeModules.home-manager - (inputs.import-tree ./modules) - ]; - }; + outputs = + inputs: + inputs.flake-parts.lib.mkFlake { inherit inputs; } { + imports = [ + inputs.home-manager.flakeModules.home-manager + (inputs.import-tree ./modules) + ]; + }; } diff --git a/modules/default.nix b/modules/default.nix index 1a07e2a..e5addbc 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -7,19 +7,22 @@ let mods = with self.nixosModules; [ agenix base_services + bluetooth boot core + chromium + gaming easyroam - myStylix + nautilus packages pipewire programs - stylixTargets + stylix + stylix_targets stylix_fonts tlp user zsh - /etc/nixos/hardware-configuration.nix ]; in { @@ -27,20 +30,19 @@ in modules = with self.nixosModules; [ - { - config.dualBoot = true; - config.networking.hostName = "nerv"; - } + nvidia + nerv + nerv_quirks ] ++ mods; }; flake.nixosConfigurations.seele = inputs.nixpkgs.lib.nixosSystem { - modules = [ - { - config.networking.hostName = "seele"; - } - ] - ++ mods; - + modules = + with self.nixosModules; + [ + seele + seele_quirks + ] + ++ mods; }; } diff --git a/modules/home/programs/btop.nix b/modules/home/programs/btop.nix new file mode 100644 index 0000000..daa6ec8 --- /dev/null +++ b/modules/home/programs/btop.nix @@ -0,0 +1,10 @@ +{...} : { + flake.homeModules.btop = { + programs.btop = { + enable = true; + settings = { + theme_background = false; + }; + }; + }; +} diff --git a/modules/home/programs/clangd.nix b/modules/home/programs/clangd.nix new file mode 100644 index 0000000..e24d2f0 --- /dev/null +++ b/modules/home/programs/clangd.nix @@ -0,0 +1,12 @@ +{ ... }: { + flake.homeModules.clangd = { + home.file."clangd" = { + text = '' + BreakBeforeBraces: Allman + IndentWidth: 8 + ''; + target = ".clang-format"; + + }; + }; +} diff --git a/modules/home/programs/emacs.nix b/modules/home/programs/emacs.nix index f8d6d78..fde2af5 100644 --- a/modules/home/programs/emacs.nix +++ b/modules/home/programs/emacs.nix @@ -4,12 +4,21 @@ programs.emacs = { enable = true; package = pkgs.emacs-pgtk; + extraPackages = + epkgs: with epkgs; [ + eldoc-box + elisp-autofmt + corfu + cape + nix-mode + envrc + elcord + qml-mode + lua-mode + ]; extraConfig = '' ;; -*- lexical-binding: t; -*- (setq make-backup-files nil) - - (add-to-list 'default-frame-alist '(font . "JetBrainsMono Nerd Font Mono-14")) - (require 'package) (add-to-list 'package-archives '("melpa-snapshots" @@ -17,25 +26,21 @@ "https://snapshots.melpa.org/packages/") t) ;; add packages - (use-package org-view-mode :ensure t) - (use-package envrc :ensure t) + (use-package org-view-mode) + (use-package envrc) - (use-package nix-mode :ensure t) + (use-package nix-mode) (use-package eldoc-box - :ensure t :hook (eglot-managed-mode . eldoc-box-hover-mode) ) (use-package elisp-autofmt - :ensure t :commands (elisp-autofmt-buffer elisp-autofmt-mode) :hook (emacs-lisp-mode . elisp-autofmt-mode) :config) - (use-package portage-modes :ensure t) (use-package corfu - :ensure t :init (setq corfu-auto t @@ -46,13 +51,12 @@ (setq tab-always-indent 'complete) (use-package cape - :ensure t :bind ("C-c p" . cape-prefix-map) ;; Alternative key: M-, M-p, M-+ :init (add-hook 'completion-at-point-functions #'cape-file)) (setq corfu-auto-prefix 2) - (use-package qml-mode :ensure t) - (use-package lua-mode :ensure t) - (use-package elcord :ensure t :init (elcord-mode)) + (use-package qml-mode) + (use-package lua-mode) + (use-package elcord :init (elcord-mode)) (add-to-list 'display-buffer-alist diff --git a/modules/home/programs/hermes.nix b/modules/home/programs/hermes.nix new file mode 100644 index 0000000..c84577d --- /dev/null +++ b/modules/home/programs/hermes.nix @@ -0,0 +1,8 @@ +{ inputs, ... }: { + flake.homeModules.hermes = { pkgs, ... }: { + imports = [ inputs.hermes-agent.homeManagerModules.default ]; + programs.hermes-agent = { + enable = true; + }; + }; +} diff --git a/modules/home/programs/niri.nix b/modules/home/programs/niri.nix index 1feea0c..30dc3ab 100644 --- a/modules/home/programs/niri.nix +++ b/modules/home/programs/niri.nix @@ -1,163 +1,197 @@ { ... }: { - flake.homeModules.niri = { + flake.homeModules.niri = { config, lib, ... }: { wayland.windowManager.niri = { enable = true; - extraConfig = '' - prefer-no-csd - hotkey-overlay { - skip-at-startup - } - - environment { - GTK_THEME "adw-gtk3-dark" - XDG_CURRENT_DESKTOP "niri" - XDG_SESSION_TYPE "wayland" - XDG_SESSION_DESKTOP "niri" - QT_QPA_PLATFORM "wayland;xcb" - OZONE_PLATFORM "wayland" - ELECTRON_OZONE_PLATFORM_HINT "auto" - } - cursor { - xcursor-size 24 - xcursor-theme "macOS" - } - input { - keyboard { - xkb { - layout "eu" - } - } - - touchpad { - tap - natural-scroll - - } - - mouse { - accel-speed -0.4 - accel-profile "flat" - } - focus-follows-mouse max-scroll-amount="20%" - - } - - output "PNP(BNQ) BenQ EX2710Q K6R04023019" { - mode "2560x1440@165.002" - scale 1 - transform "normal" - position x=1920 y=0 - } - output "Dell Inc. DELL P2317H 9KFDW6C533DB" { - position x=0 y=0 - } - - output "eDP-1" { - scale 1 - } - - - layout { - gaps 16 - center-focused-column "never" - default-column-width { proportion 0.6; } - focus-ring { - off - } - border { - width 2 - active-color "#ffc87f" - inactive-color "#505050" - } - } - spawn-at-startup "qs" - screenshot-path null - animations {} - window-rule { - geometry-corner-radius 16 - clip-to-geometry true - } - - binds { - Mod+return { spawn-sh "ghostty +new-window"; } - Mod+space { spawn "fuzzel"; } - Mod+e { spawn "nautilus"; } - - XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; } - XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } - XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } - XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } - - XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; } - XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; } - XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; } - XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; } - - XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } - XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } - - Mod+O repeat=false { toggle-overview; } - Mod+Q repeat=false { 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+comma { focus-monitor-left; } - Mod+period { focus-monitor-right; } - - Mod+Shift+comma { move-column-to-monitor-left; } - Mod+Shift+period { move-column-to-monitor-right; } - - - Mod+Shift+WheelScrollDown { focus-column-right; } - Mod+Shift+WheelScrollUp { focus-column-left; } - 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+Shift+1 { move-column-to-workspace 1; } - Mod+Shift+2 { move-column-to-workspace 2; } - Mod+Shift+3 { move-column-to-workspace 3; } - Mod+Shift+4 { move-column-to-workspace 4; } - Mod+Shift+5 { move-column-to-workspace 5; } - Mod+Shift+6 { move-column-to-workspace 6; } - Mod+Shift+7 { move-column-to-workspace 7; } - Mod+Shift+8 { move-column-to-workspace 8; } - Mod+Shift+9 { move-column-to-workspace 9; } - - Mod+BracketLeft { consume-or-expel-window-left; } - Mod+BracketRight { consume-or-expel-window-right; } - Mod+F { maximize-column; } - - Mod+Minus { set-column-width "-10%"; } - Mod+Equal { set-column-width "+10%"; } - - Mod+V { toggle-window-floating; } - Mod+Shift+S { screenshot; } - Alt+Shift+S { screenshot-screen; } - Alt+Ctrl+S { screenshot-window; } - Mod+Shift+q { quit; } - } - ''; + systemd.enable = true; + settings = { + prefer-no-csd = { }; + hotkey-overlay.skip-at-startup = { }; + environment = { + XDG_CURRENT_DESKTOP = "niri"; + XDG_SESSION_TYPE = "wayland"; + XDG_SESSION_DESKTOP = "niri"; + }; + cursor = { + xcursor-size = 24; + xcursor-theme = "macOS"; + }; + input = { + keyboard.xkb.layout = "eu"; + touchpad = { + tap = { }; + natural-scroll = { }; + }; + tablet = { + map-to-output = "PNP(BNQ) BenQ EX2710Q K6R04023019"; + }; + mouse = { + accel-speed = -0.4; + accel-profile = "flat"; + }; + focus-follows-mouse._props.max-scroll-amount = "20%"; + }; + screenshot-path = null; + animations = { }; + layout = { + gaps = 16; + center-focused-column = "never"; + default-column-width._children = [ { proportion = 0.6; } ]; + focus-ring.off = { }; + border = { + width = 2; + active-color = config.lib.stylix.colors.base0D; + inactive-color = config.lib.stylix.colors.base03; + }; + }; + binds = { + "Mod+Return".spawn-sh = "ghostty +new-window"; + "Mod+space".spawn = [ "fuzzel" ]; + "Mod+e".spawn = [ "nautilus" ]; + "XF86AudioRaiseVolume" = { + _props.allow-when-locked = true; + spawn-sh = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; + }; + "XF86AudioLowerVolume" = { + _props.allow-when-locked = true; + spawn-sh = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; + }; + "XF86AudioMute" = { + _props.allow-when-locked = true; + spawn-sh = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + }; + "XF86AudioMicMute" = { + _props.allow-when-locked = true; + spawn-sh = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; + }; + "XF86AudioPlay" = { + _props.allow-when-locked = true; + spawn-sh = "playerctl play-pause"; + }; + "XF86AudioStop" = { + _props.allow-when-locked = true; + spawn-sh = "playerctl stop"; + }; + "XF86AudioPrev" = { + _props.allow-when-locked = true; + spawn-sh = "playerctl previous"; + }; + "XF86AudioNext" = { + _props.allow-when-locked = true; + spawn-sh = "playerctl next"; + }; + "XF86MonBrightnessUp" = { + _props.allow-when-locked = true; + spawn = [ + "brightnessctl" + "--class=backlight" + "set" + "+10%" + ]; + }; + "XF86MonBrightnessDown" = { + _props.allow-when-locked = true; + spawn = [ + "brightnessctl" + "--class=backlight" + "set" + "10%-" + ]; + }; + "Mod+O" = { + _props.repeat = false; + toggle-overview = { }; + }; + "Mod+Q" = { + _props.repeat = false; + 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+comma".focus-monitor-left = { }; + "Mod+period".focus-monitor-right = { }; + "Mod+Shift+comma".move-column-to-monitor-left = { }; + "Mod+Shift+period".move-column-to-monitor-right = { }; + "Mod+Shift+WheelScrollDown".focus-column-right = { }; + "Mod+Shift+WheelScrollUp".focus-column-left = { }; + "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+Shift+1".move-column-to-workspace = 1; + "Mod+Shift+2".move-column-to-workspace = 2; + "Mod+Shift+3".move-column-to-workspace = 3; + "Mod+Shift+4".move-column-to-workspace = 4; + "Mod+Shift+5".move-column-to-workspace = 5; + "Mod+Shift+6".move-column-to-workspace = 6; + "Mod+Shift+7".move-column-to-workspace = 7; + "Mod+Shift+8".move-column-to-workspace = 8; + "Mod+Shift+9".move-column-to-workspace = 9; + "Mod+BracketLeft".consume-or-expel-window-left = { }; + "Mod+BracketRight".consume-or-expel-window-right = { }; + "Mod+F".maximize-column = { }; + "Mod+Minus".set-column-width = "-10%"; + "Mod+Equal".set-column-width = "+10%"; + "Mod+V".toggle-window-floating = { }; + "Mod+Shift+S".screenshot = { }; + "Alt+Shift+S".screenshot-screen = { }; + "Alt+Ctrl+S".screenshot-window = { }; + "Mod+Shift+q".quit = { }; + }; + _children = [ + { + output = { + _args = [ "PNP(BNQ) BenQ EX2710Q K6R04023019" ]; + mode = "2560x1440@165.002"; + scale = 1; + transform = "normal"; + position._props = { + x = 1920; + y = 0; + }; + }; + } + { + output = { + _args = [ "Dell Inc. DELL P2317H 9KFDW6C533DB" ]; + position._props = { + x = 0; + y = 0; + }; + }; + } + { + output = { + _args = [ "eDP-1" ]; + scale = 1; + }; + } + { + window-rule._children = [ + { geometry-corner-radius = 16; } + { clip-to-geometry = true; } + ]; + } + ]; + }; }; }; } diff --git a/modules/home/programs/quickshell.nix b/modules/home/programs/quickshell.nix new file mode 100644 index 0000000..ea7404e --- /dev/null +++ b/modules/home/programs/quickshell.nix @@ -0,0 +1,9 @@ +{ ... }: { + + flake.homeModules.quickshell = { + programs.quickshell = { + enable = true; + systemd.enable = true; + }; + }; +} diff --git a/modules/home/programs/spotify.nix b/modules/home/programs/spotify.nix new file mode 100644 index 0000000..cb5ee08 --- /dev/null +++ b/modules/home/programs/spotify.nix @@ -0,0 +1,8 @@ +{ inputs, ... }: { + flake.homeModules.spotify = { + imports = [ inputs.spicetify-nix.homeManagerModules.spicetify ]; + programs.spicetify = { + enable = true; + }; + }; +} diff --git a/modules/home/services/syncthing.nix b/modules/home/services/syncthing.nix new file mode 100644 index 0000000..1814348 --- /dev/null +++ b/modules/home/services/syncthing.nix @@ -0,0 +1,12 @@ +{ ... }: { + flake.homeModules.syncthing = { + services.syncthing = { + enable = true; + settings = { + devices = { + cyberia.id = "5SW5N7Z-BGTZD37-5ELRQVE-PBRK3O5-M4CGYLZ-R3KCVVS-AM5QD2G-WTQYKA7"; + }; + }; + }; + }; +} diff --git a/modules/home/stylix/targets.nix b/modules/home/stylix/targets.nix index 3708b27..ff5fc39 100644 --- a/modules/home/stylix/targets.nix +++ b/modules/home/stylix/targets.nix @@ -1,11 +1,13 @@ {inputs, ...}: { - flake.homeModules.homeStylix = { + flake.homeModules.stylix = { stylix.targets = { ghostty.enable = true; fuzzel.enable = true; gtk.enable = true; + qt.enable = true; emacs.enable = true; nixcord.enable = true; + spicetify.enable = true; }; }; } diff --git a/modules/system/core/boot.nix b/modules/system/core/boot.nix index 35e0e3d..cd2b8cf 100644 --- a/modules/system/core/boot.nix +++ b/modules/system/core/boot.nix @@ -10,6 +10,7 @@ config.boot.loader = { efi.canTouchEfiVariables = true; limine = { + style.wallpapers = [ ]; enable = true; extraEntries = lib.mkIf config.dualBoot '' /Windows 11 diff --git a/modules/system/core/core.nix b/modules/system/core/core.nix index 430c611..cd88822 100644 --- a/modules/system/core/core.nix +++ b/modules/system/core/core.nix @@ -1,15 +1,7 @@ { ... }: { - flake.nixosModules.core = { - hardware.bluetooth = { - enable = true; - powerOnBoot = false; - input.General.ClassicBondedOnly = false; - settings = { - General = { - Experimental = true; - }; - }; - }; + flake.nixosModules.core = { pkgs, ... }: { + hardware.enableRedistributableFirmware = true; + boot.kernelPackages = pkgs.linuxPackages_latest; time.timeZone = "Europe/Berlin"; i18n.defaultLocale = "en_US.UTF-8"; i18n.extraLocaleSettings = { @@ -33,5 +25,6 @@ "nix-command" "flakes" ]; + system.stateVersion = "26.05"; }; } diff --git a/modules/system/core/packages.nix b/modules/system/core/packages.nix index d40f18c..e316ac4 100644 --- a/modules/system/core/packages.nix +++ b/modules/system/core/packages.nix @@ -2,46 +2,36 @@ flake.nixosModules.packages = { pkgs, ... }: { nixpkgs.config.allowUnfree = true; programs.niri.enable = true; + services.displayManager.gdm.enable = true; environment.systemPackages = with pkgs; [ - stow ufetch rbw pinentry-gnome3 nixd nixfmt xournalpp - rnote - btop chromium - quickshell wl-clipboard - adw-gtk3 polkit_gnome xwayland-satellite - nemo + nautilus libwacom devenv - kdePackages.qt6ct gcc - clang-tools - clang gdb + clang-tools gnumake - libreoffice ripgrep jq - nmgui kdePackages.qtdeclarative - gsettings-desktop-schemas - glib + brightnessctl + libreoffice-stable + ani-cli + ryubing ]; fonts.packages = with pkgs; [ - jetbrains-mono - nerd-fonts.jetbrains-mono - noto-fonts - noto-fonts-cjk-sans - noto-fonts-color-emoji inter + noto-fonts ]; }; } diff --git a/modules/system/core/user.nix b/modules/system/core/user.nix index 2de9142..0830502 100644 --- a/modules/system/core/user.nix +++ b/modules/system/core/user.nix @@ -15,20 +15,34 @@ home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit inputs; }; - home-manager.users.lucy = { + home-manager.users.lucy = { config, lib, ... }: { home.username = "lucy"; home.homeDirectory = "/home/lucy"; home.stateVersion = "25.11"; - + home.activation.reloadQuickshell = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + qs=${lib.getExe' config.programs.quickshell.package "qs"} + runtime_dir="''${XDG_RUNTIME_DIR:-/run/user/$(id -u)}" + if run --silence env XDG_RUNTIME_DIR="$runtime_dir" "$qs" ipc show; then + run --silence env XDG_RUNTIME_DIR="$runtime_dir" "$qs" ipc call config reload || + warnEcho "Quickshell is running, but 'qs ipc call config reload' failed" + fi + ''; }; home-manager.sharedModules = with self.homeModules; [ + btop + clangd nixcord ghostty + hermes niri emacs git - homeStylix + stylix fuzzel + quickshell + spotify + syncthing ]; }; + } diff --git a/modules/system/hardware/bluetooth.nix b/modules/system/hardware/bluetooth.nix new file mode 100644 index 0000000..c40074a --- /dev/null +++ b/modules/system/hardware/bluetooth.nix @@ -0,0 +1,15 @@ +{ ... }: +{ + flake.nixosModules.bluetooth = { + hardware.bluetooth = { + enable = true; + powerOnBoot = false; + input.General.ClassicBondedOnly = false; + settings = { + General = { + Experimental = true; + }; + }; + }; + }; +} diff --git a/modules/system/hardware/nvidia.nix b/modules/system/hardware/nvidia.nix new file mode 100644 index 0000000..9c23782 --- /dev/null +++ b/modules/system/hardware/nvidia.nix @@ -0,0 +1,18 @@ +{ ... }: { + flake.nixosModules.nvidia = { config, ... }: { + # Enable OpenGL + hardware.graphics = { + enable = true; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + open = true; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + }; +} diff --git a/modules/system/hosts/nerv/hardware-configuration.nix b/modules/system/hosts/nerv/hardware-configuration.nix new file mode 100644 index 0000000..f411dac --- /dev/null +++ b/modules/system/hosts/nerv/hardware-configuration.nix @@ -0,0 +1,43 @@ +# 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. +{ lib, config, ... }: + +{ + flake.nixosModules.nerv = { config, ... }: { + + boot.initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "usbhid" + "usb_storage" + "sd_mod" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/48badf37-8adb-48d0-b861-fbf71cbaddd7"; + fsType = "xfs"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/DC66-ACA6"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + swapDevices = [ + { device = "/dev/disk/by-uuid/3b0e79c9-e3d8-4b58-99b4-63c98309ac85"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + }; + +} diff --git a/modules/system/hosts/nerv/quirks.nix b/modules/system/hosts/nerv/quirks.nix new file mode 100644 index 0000000..a53af4e --- /dev/null +++ b/modules/system/hosts/nerv/quirks.nix @@ -0,0 +1,8 @@ +{ ... }: { + flake.nixosModules.nerv_quirks = { config, ... }: { + config = { + networking.hostName = "nerv"; + dualBoot = true; + }; + }; +} diff --git a/modules/system/hosts/seele/hardware-configuration.nix b/modules/system/hosts/seele/hardware-configuration.nix new file mode 100644 index 0000000..60e76f9 --- /dev/null +++ b/modules/system/hosts/seele/hardware-configuration.nix @@ -0,0 +1,49 @@ +{ + lib, + config, + modulesPath, + ... +}: + +{ + flake.nixosModules.seele = + { + config, + lib, + + ... + }: + { + boot.initrd.availableKernelModules = [ + "xhci_pci" + "nvme" + "usb_storage" + "sd_mod" + "sdhci_pci" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/629196f0-60e9-476e-b294-0d22fd7279c4"; + fsType = "xfs"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/2474-C1E6"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + swapDevices = [ + { device = "/dev/disk/by-uuid/166d1fb4-527f-4fda-a6bf-85aad4a4f917"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + }; +} diff --git a/modules/system/hosts/seele/quirks.nix b/modules/system/hosts/seele/quirks.nix new file mode 100644 index 0000000..34a64ac --- /dev/null +++ b/modules/system/hosts/seele/quirks.nix @@ -0,0 +1,5 @@ +{ ... }: { + flake.nixosModules.seele_quirks = { + networking.hostName = "seele"; + }; +} diff --git a/modules/system/programs/chromium.nix b/modules/system/programs/chromium.nix new file mode 100644 index 0000000..e47fe90 --- /dev/null +++ b/modules/system/programs/chromium.nix @@ -0,0 +1,11 @@ +{ ... }: { + flake.nixosModules.chromium = { + programs.chromium = { + enable = true; + extensions = [ + "nngceckbapebfimnlniiiahkandclblb" # bitwarden + "ddkjiahejlhfcafbddmgiahcphecmpfh" # ublock origin lite + ]; + }; + }; +} diff --git a/modules/system/programs/default.nix b/modules/system/programs/default.nix index e4458ef..4950094 100644 --- a/modules/system/programs/default.nix +++ b/modules/system/programs/default.nix @@ -1,7 +1,6 @@ { ... }: { flake.nixosModules.programs = { programs.niri.enable = true; - programs.steam.enable = true; programs.direnv.enable = true; }; } diff --git a/modules/system/programs/gaming.nix b/modules/system/programs/gaming.nix new file mode 100644 index 0000000..aeeff62 --- /dev/null +++ b/modules/system/programs/gaming.nix @@ -0,0 +1,26 @@ +{ + flake.nixosModules.gaming = + { pkgs, ... }: + { + programs.steam = { + enable = true; + extraCompatPackages = with pkgs; [ proton-ge-bin ]; + protontricks.enable = true; + remotePlay.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + }; + + programs.gamescope = { + enable = true; + capSysNice = true; + enableWsi = true; + }; + + programs.gamemode.enable = true; + + environment.systemPackages = with pkgs; [ + heroic # Epic-Fassung von Rocket League (braucht GE-Proton) + umu-launcher # Proton-Runtime für Heroic / Nicht-Steam-Games + ]; + }; +} diff --git a/modules/system/programs/nautilus.nix b/modules/system/programs/nautilus.nix new file mode 100644 index 0000000..94e33ca --- /dev/null +++ b/modules/system/programs/nautilus.nix @@ -0,0 +1,6 @@ +{ ... }: { + flake.nixosModules.nautilus = { + services.gvfs.enable = true; + services.udisks2.enable = true; + }; +} diff --git a/modules/system/stylix/default.nix b/modules/system/stylix/default.nix index b4ccdb0..04fea95 100644 --- a/modules/system/stylix/default.nix +++ b/modules/system/stylix/default.nix @@ -1,11 +1,11 @@ { inputs, ... }: { - flake.nixosModules.myStylix = { pkgs, ... }: { + flake.nixosModules.stylix = { pkgs, ... }: { imports = [ inputs.stylix.nixosModules.stylix ]; stylix = { enable = true; - base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml"; + base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml"; cursor = { name = "macOS"; package = pkgs.apple-cursor; diff --git a/modules/system/stylix/fonts.nix b/modules/system/stylix/fonts.nix index c8025a6..4d5338d 100644 --- a/modules/system/stylix/fonts.nix +++ b/modules/system/stylix/fonts.nix @@ -1,6 +1,7 @@ { ... }: { flake.nixosModules.stylix_fonts = { pkgs, config, ... }: { stylix.fonts = { + sizes.terminal = 14; serif = { package = config.stylix.fonts.monospace.package; name = config.stylix.fonts.monospace.name; @@ -12,8 +13,8 @@ }; monospace = { - package = pkgs.iosevka; - name = "Iosevka"; + package = pkgs.maple-mono.Normal-TTF; + name = "Maple Mono Normal"; }; emoji = { diff --git a/modules/system/stylix/targets.nix b/modules/system/stylix/targets.nix index 81b064f..c75de55 100644 --- a/modules/system/stylix/targets.nix +++ b/modules/system/stylix/targets.nix @@ -1,8 +1,9 @@ { inputs, ... }: { - flake.nixosModules.stylixTargets = { + flake.nixosModules.stylix_targets = { stylix.autoEnable = false; stylix.targets = { gtk.enable = true; + qt.enable = true; chromium.enable = true; console.enable = true; font-packages.enable = true;