diff --git a/flake.lock b/flake.lock index 8e1531b..7e0959e 100644 --- a/flake.lock +++ b/flake.lock @@ -18,6 +18,24 @@ "type": "github" } }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1787559586, + "narHash": "sha256-onL0VLf9vPllmT0H/OlURIU5r5t5WIEl7t4tVNKT0Nw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9d0d87172c374f89da73c1cfe6d81ae62feac1f1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "fromYaml": { "flake": false, "locked": { @@ -68,6 +86,21 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1785031560, + "narHash": "sha256-OmshNvn2vupOFpYinLUu+1Dnpu4n7Q5N3ggGVNHpkUI=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "0e79af5e3d4dcfcd676ab5ba3f95d2e3352e078c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1788039129, @@ -84,13 +117,30 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1786719841, + "narHash": "sha256-QcpQOT0NQEFkI77t+YXPZqDJc35iIodG7zinieOwFUg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8be7bd0c83f12e2e3bbba07c9044d6fed9e66f7f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "base16": "base16", + "flake-parts": "flake-parts", "home-manager": "home-manager", "nixpkgs": "nixpkgs_2", "tt-schemes": "tt-schemes", - "tt-terminal": "tt-terminal" + "wrappers": "wrappers" } }, "tt-schemes": { @@ -109,19 +159,21 @@ "type": "github" } }, - "tt-terminal": { - "flake": false, + "wrappers": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1786840953, - "narHash": "sha256-R5U9KnrG5cARf90nw5e33Z4A4svwLTRv9qbvFAiAaAY=", - "owner": "tinted-theming", - "repo": "tinted-terminal", - "rev": "993a33342b053b1830e4ccb82448455991dcfd54", + "lastModified": 1787722691, + "narHash": "sha256-bWBt7v2FhgG6WTLgSi8nYGi1zXaTdA+vTdCRdvR2vcw=", + "owner": "BirdeeHub", + "repo": "nix-wrapper-modules", + "rev": "04ef216559b18214853879df862f493a9e6bb8cf", "type": "github" }, "original": { - "owner": "tinted-theming", - "repo": "tinted-terminal", + "owner": "BirdeeHub", + "repo": "nix-wrapper-modules", "type": "github" } } diff --git a/flake.nix b/flake.nix index a596813..6a4ad46 100644 --- a/flake.nix +++ b/flake.nix @@ -1,59 +1,35 @@ { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + wrappers.url = "github:BirdeeHub/nix-wrapper-modules"; + flake-parts.url = "github:hercules-ci/flake-parts"; base16.url = "github:SenchoPens/base16.nix"; - home-manager.url = "github:nix-community/home-manager"; tt-schemes = { url = "github:tinted-theming/schemes"; flake = false; }; - tt-terminal = { - url = "github:tinted-theming/tinted-terminal"; - flake = false; - }; - + home-manager.url = "github:nix-community/home-manager"; }; outputs = { self, nixpkgs, + wrappers, + flake-parts, base16, home-manager, ... }@inputs: - let - theme = "catppuccin-mocha"; - in - { - nixosConfigurations.nerv = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - ./theme.nix - ({ pkgs, ... }: { - config.theming.theme = "catppuccin-mocha"; - config.theming.font = "Iosevka"; - config.theming.fontPackage = pkgs.iosevka; - }) - base16.nixosModule - ({ config, ... }: { scheme = "${config.theming.theme}"; }) - ./modules/hosts/nerv/configuration.nix - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { inherit inputs; }; - imports = [ - ./modules/home.nix - ./modules/programs/emacs.nix - ./modules/programs/niri.nix - ./modules/programs/foot.nix - ./modules/programs/quickshell.nix - ./modules/programs/fuzzel.nix - ]; - } + flake-parts.lib.mkFlake { inherit inputs; } ( + let + theme = "catppuccin-mocha"; + in + { + imports = [ + wrappers.flakeModules.wrappers + (import ./hosts.nix { themeName = theme; }) ]; - }; - - }; + } + ); } diff --git a/hosts.nix b/hosts.nix new file mode 100644 index 0000000..e47bc07 --- /dev/null +++ b/hosts.nix @@ -0,0 +1,28 @@ +{themeName}: { inputs, config, self, ... }: +{ + flake.nixosConfigurations.nerv = inputs.nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ + inputs.base16.nixosModule + { scheme = "${inputs.tt-schemes}/base16/${themeName}.yaml"; } + ./modules/hosts/nerv/configuration.nix + ./modules/home.nix + inputs.home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { inherit inputs; }; + } + { + imports = [ + (inputs.wrappers.lib.getInstallModule { + name = "emacs"; + value = inputs.wrappers.lib.wrapperModules.emacs; + }) + ./modules/programs/emacs/emacs.nix + ]; + + } + ]; + }; +} diff --git a/modules/home.nix b/modules/home.nix index 8dd2351..e73ed4e 100644 --- a/modules/home.nix +++ b/modules/home.nix @@ -8,37 +8,10 @@ let in { home-manager.users.lucy = { - home.packages = with pkgs; [ - nixd - nixfmt - clang - kdePackages.qtdeclarative - ]; home.stateVersion = "26.05"; - home.pointerCursor = { - enable = true; - name = "macOS"; - package = pkgs.apple-cursor; - size = 24; - }; gtk = { enable = true; colorScheme = "dark"; - theme = { - name = "adw-gtk3-dark"; - package = pkgs.adw-gtk3; - }; - iconTheme = { - name = "Papirus-Dark"; - package = pkgs.papirus-icon-theme; - }; - font = { - name = config.theming.font; - package = config.theming.fontPackage; - size = 12; - }; - cursorTheme.name = "macOS"; - cursorTheme.size = 24; gtk3.extraCss = '' @define-color theme_bg_color ${c.base00}; @define-color theme_fg_color ${c.base05}; @@ -79,6 +52,5 @@ in @define-color success_color ${c.base0B}; ''; }; - dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-dark"; }; } diff --git a/modules/hosts/nerv/#nerv.nix# b/modules/hosts/nerv/#nerv.nix# new file mode 100644 index 0000000..150d2b9 --- /dev/null +++ b/modules/hosts/nerv/#nerv.nix# @@ -0,0 +1,9 @@ +{ inputs, ... }: { + flake.nixosConfigurations.nerv = inputs.nixpkgs.lib.nixosSystem { + modules = [ + ./configuration.nix + + ]; + }; +} + \ No newline at end of file diff --git a/modules/hosts/nerv/.#nerv.nix b/modules/hosts/nerv/.#nerv.nix new file mode 120000 index 0000000..3242c7a --- /dev/null +++ b/modules/hosts/nerv/.#nerv.nix @@ -0,0 +1 @@ +lucy@nerv.50314:1788169501 \ No newline at end of file diff --git a/modules/hosts/nerv/configuration.nix b/modules/hosts/nerv/configuration.nix index da7f513..e7c84ea 100644 --- a/modules/hosts/nerv/configuration.nix +++ b/modules/hosts/nerv/configuration.nix @@ -20,10 +20,7 @@ networking.networkmanager.enable = true; # enable flakes - nix.settings.experimental-features = [ - "nix-command" - "flakes" - ]; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; # use proprietary nvidia drivers hardware.graphics.enable = true; @@ -42,10 +39,6 @@ i18n.defaultLocale = "en_US.UTF-8"; services.desktopManager.gnome.enable = true; services.displayManager.gdm.enable = true; - programs.niri = { - enable = true; - - }; services.xserver.xkb.layout = "us"; services.pipewire = { enable = true; @@ -69,9 +62,6 @@ git clang ]; - fonts.packages = [ - config.theming.fontPackage - ]; system.stateVersion = "26.05"; # Did you read the comment? } diff --git a/modules/programs/emacs.nix b/modules/programs/emacs.nix deleted file mode 100644 index e79dfe4..0000000 --- a/modules/programs/emacs.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ - config, - ... -}: -{ - home-manager.users.lucy.programs.emacs = { - enable = true; - extraPackages = - epkgs: with epkgs.melpaPackages; [ - corfu - cape - qml-mode - lua-mode - elcord - nix-mode - base16-theme - ]; - - extraConfig = '' - ;;; -*- lexical-binding: t; -*- - (setq make-backup-files nil) - (load-theme 'base16-${config.scheme.scheme-slug} t) - (use-package - corfu - :init - (setq - corfu-auto t - corfu-auto-delay 0.2) - (global-corfu-mode)) - - (setq tab-always-indent 'complete) - (use-package - cape - :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) - (use-package lua-mode) - (use-package elcord :init (elcord-mode)) - - (add-to-list - 'display-buffer-alist - '("\\*compilation\\*" (display-buffer-reuse-window - display-buffer-below-selected) - (window-height . 0.3))) - - - ;; remove useless shit and set default opts - (setq ring-bell-function 'ignore) - (menu-bar-mode -1) - (tool-bar-mode -1) - (setq display-line-numbers-type 'relative) - (global-display-line-numbers-mode +1) - (global-tab-line-mode 1) - (scroll-bar-mode -1) - (setq inhibit-splash-screen 1) - (setq custom-file "~/.emacs.d/custom.el") - (load custom-file 'noerror) - - - ;; lsp shit - (add-hook 'nix-mode-hook #'eglot-ensure) - (add-hook 'c-mode-hook #'eglot-ensure) - (add-hook 'qml-mode-hook #'eglot-ensure) - (with-eval-after-load 'eglot - (add-to-list 'eglot-server-programs '(nix-mode . ("nixd"))) - (add-to-list 'eglot-server-programs '(qml-mode . ("qmlls")))) - - ;; keybindings - (keymap-global-set "C-c f" 'eglot-format) - (keymap-global-set "C-c t" 'term) - (keymap-global-set "C-c c" 'compile) - (keymap-global-set "C-c k b" 'kill-current-buffer) - (keymap-global-set "C-c k w" 'kill-buffer-and-window) - (windmove-default-keybindings) - ''; - }; -} diff --git a/modules/programs/emacs/emacs.nix b/modules/programs/emacs/emacs.nix new file mode 100644 index 0000000..8d6e2b1 --- /dev/null +++ b/modules/programs/emacs/emacs.nix @@ -0,0 +1,101 @@ +{ + inputs, + lib, + config, + ... +}: +let + schemeName = config.scheme; +in +{ + wrappers.emacs = + { + pkgs, + wlib, + ... + }: + let + scheme = (pkgs.callPackage inputs.base16.lib { }).mkSchemeAttrs schemeName; + in + { + enable = true; + imports = [ + wlib.wrapperModules.emacs + ]; + emacsPackages = + epkgs: with epkgs.melpaPackages; [ + corfu + cape + qml-mode + lua-mode + elcord + nix-mode + base16-theme + ]; + + runtimePkgs = with pkgs; [ + nixd + nixfmt + qt6.qtdeclarative + ]; + constructFiles.early-init.content = lib.mkBefore ";;; -*- lexical-binding: t; -*-"; + configFile = '' + ;;; -*- lexical-binding: t; -*- + (setq make-backup-files nil) + (load-theme 'base16-${scheme.scheme-slug} t) + (use-package + corfu + :init + (setq + corfu-auto t + corfu-auto-delay 0.2) + (global-corfu-mode)) + + (setq tab-always-indent 'complete) + (use-package + cape + :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) + (use-package lua-mode) + (use-package elcord :init (elcord-mode)) + + (add-to-list + 'display-buffer-alist + '("\\*compilation\\*" (display-buffer-reuse-window + display-buffer-below-selected) + (window-height . 0.3))) + + + ;; remove useless shit and set default opts + (setq ring-bell-function 'ignore) + (menu-bar-mode -1) + (tool-bar-mode -1) + (setq display-line-numbers-type 'relative) + (global-display-line-numbers-mode +1) + (global-tab-line-mode 1) + (scroll-bar-mode -1) + (setq inhibit-splash-screen 1) + (setq custom-file "~/.emacs.d/custom.el") + (load custom-file 'noerror) + + + ;; lsp shit + (add-hook 'nix-mode-hook #'eglot-ensure) + (add-hook 'c-mode-hook #'eglot-ensure) + (add-hook 'qml-mode-hook #'eglot-ensure) + (with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs '(nix-mode . ("nixd"))) + (add-to-list 'eglot-server-programs '(qml-mode . ("qmlls")))) + + ;; keybindings + (keymap-global-set "C-c f" 'eglot-format) + (keymap-global-set "C-c t" 'term) + (keymap-global-set "C-c c" 'compile) + (keymap-global-set "C-c k b" 'kill-current-buffer) + (keymap-global-set "C-c k w" 'kill-buffer-and-window) + (windmove-default-keybindings) + ''; + }; +} diff --git a/modules/programs/foot.nix b/modules/programs/foot.nix deleted file mode 100644 index e063b36..0000000 --- a/modules/programs/foot.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - pkgs, - config, - inputs, - ... -}: -let - c = config.scheme; -in -{ - home-manager.users.lucy.programs.foot = { - enable = true; - settings = { - main = { - font = "${config.theming.font}:size=12"; - pad = "15x15"; - }; - - colors-dark = { - background = c.base00; - foreground = c.base05; - - regular0 = c.base00; - regular1 = c.base08; - regular2 = c.base0B; - regular3 = c.base0A; - regular4 = c.base0D; - regular5 = c.base0E; - regular6 = c.base0C; - regular7 = c.base05; - - bright0 = c.base03; - bright1 = c.base08; - bright2 = c.base0B; - bright3 = c.base0A; - bright4 = c.base0D; - bright5 = c.base0E; - bright6 = c.base0C; - bright7 = c.base07; - - selection-foreground = c.base00; - selection-background = c.base05; - }; - }; - }; - -} diff --git a/modules/programs/fuzzel.nix b/modules/programs/fuzzel.nix deleted file mode 100644 index f490212..0000000 --- a/modules/programs/fuzzel.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ config, ... }: -let - c = config.scheme.withHashtag; -in -{ - home-manager.users.lucy = { - programs.fuzzel = { - enable = true; - settings = { - main = { - font = "${config.theming.font}:size=12"; - }; - border.width = 2; - colors = { - background = "${c.base00}ff"; - text = "${c.base05}ff"; - match = "${c.base0D}ff"; - selection = "${c.base0D}ff"; - border = "${c.base0D}ff"; - }; - }; - }; - }; -} diff --git a/modules/programs/niri.nix b/modules/programs/niri.nix deleted file mode 100644 index eb117e1..0000000 --- a/modules/programs/niri.nix +++ /dev/null @@ -1,153 +0,0 @@ -{ pkgs, config, ... }: -{ - home-manager.users.lucy.wayland.windowManager.niri = { - enable = true; - extraConfig = '' - prefer-no-csd - 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="0%" - } - - 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 - } - - - layout { - gaps 16 - center-focused-column "never" - default-column-width { proportion 0.5; } - focus-ring { - off - } - border { - width 4 - active-color "${config.scheme.withHashtag.base0D}" - inactive-color "${config.scheme.withHashtag.base02}" - } - } - screenshot-path null - animations {} - window-rule { - geometry-corner-radius 16 - clip-to-geometry true - } - - binds { - Mod+return { spawn "foot"; } - 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+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; } - - 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; } - } - ''; - - }; - -} diff --git a/modules/programs/quickshell.nix b/modules/programs/quickshell.nix deleted file mode 100644 index b601367..0000000 --- a/modules/programs/quickshell.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ pkgs, config, ... }: -let - c = config.scheme.withHashtag; -in -{ - - home-manager.users.lucy = { - programs.quickshell.enable = true; - programs.quickshell.systemd.enable = true; - xdg.configFile."quickshell/Colors.js" = { - enable = true; - text = '' - const colors = { - base00: "${c.base00}", - base01: "${c.base01}", - base02: "${c.base02}", - base03: "${c.base03}", - base04: "${c.base04}", - base05: "${c.base05}", - base06: "${c.base06}", - base07: "${c.base07}", - base08: "${c.base08}", - base09: "${c.base09}", - base0A: "${c.base0A}", - base0B: "${c.base0B}", - base0C: "${c.base0C}", - base0D: "${c.base0D}", - base0E: "${c.base0E}", - base0F: "${c.base0F}", - } - ''; - force = true; - }; - - }; -} diff --git a/theme.nix b/theme.nix deleted file mode 100644 index 9d01887..0000000 --- a/theme.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ lib, inputs, ...}: { - options.theming.theme = lib.mkOption { - type = lib.types.str; - apply = name: "${inputs.tt-schemes}/base16/${name}.yaml"; - }; - options.theming.font = lib.mkOption { - type = lib.types.str; - }; - options.theming.fontPackage = lib.mkOption { - type = lib.types.package; - }; -}