From f89fefa53d48139bad1739b2d0b9cc60f8cbc762 Mon Sep 17 00:00:00 2001 From: Amneesh Singh Date: Mon, 28 Mar 2022 04:57:27 +0530 Subject: [PATCH] Satori: a. Signed-off-by: Amneesh Singh --- flake.lock | 78 ++++++------- flake.nix | 2 +- home/natto/config/dunst/dunstrc | 16 +-- home/natto/config/emacs/config.org | 103 ++++++++++-------- home/natto/pkgs.nix | 1 + home/natto/programs.nix | 12 +- home/natto/services.nix | 6 + home/natto/stuff.nix | 1 + home/natto/xsession.nix | 12 +- hosts/README.md | 3 - hosts/README.org | 3 + hosts/satori/pkgs.nix | 12 +- hosts/satori/stuff.nix | 6 +- modules/graphics.nix | 53 +++++++++ modules/mesa-vulkan-layer-nvidia.patch | 17 +++ modules/nvidia-offload.nix | 39 ------- .../customscripts/src/hm-switch | 9 +- 17 files changed, 221 insertions(+), 152 deletions(-) delete mode 100644 hosts/README.md create mode 100644 hosts/README.org create mode 100644 modules/graphics.nix create mode 100644 modules/mesa-vulkan-layer-nvidia.patch delete mode 100644 modules/nvidia-offload.nix rename hm-switch => overlays/customscripts/src/hm-switch (56%) diff --git a/flake.lock b/flake.lock index 2ec664b..b31ed08 100644 --- a/flake.lock +++ b/flake.lock @@ -18,11 +18,11 @@ }, "emacs": { "locked": { - "lastModified": 1647537202, - "narHash": "sha256-Ku2gXwzaC9sZGcc8EuJzJLRSGRInkMy/D7O+6LvF4Mk=", + "lastModified": 1647914335, + "narHash": "sha256-6DcYfyQYb5chJkm3KPWvMTZrs1JtG4WMCtta1ocvlmg=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "6fdb3c0cefe2574073b31b27d2b2f5df9532cd5a", + "rev": "023ce0b1e29732c6d26a380ad5dc8298c298f99b", "type": "github" }, "original": { @@ -49,11 +49,11 @@ }, "flake-utils": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -97,11 +97,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1647545448, - "narHash": "sha256-Y6W0Pl+M8ewr1TFhi5dsrs0dTlE3AeGFesnpva1xSLM=", + "lastModified": 1647903177, + "narHash": "sha256-9aWSpW/F8POA/7cuVpoqhVGfjAgcGRIinwxUaXmUpkk=", "owner": "nix-community", "repo": "home-manager", - "rev": "e01facc34045cf0026ba61d04e69c61e11f99408", + "rev": "80b4360678fa7890964ba8e40a722985bf8d107e", "type": "github" }, "original": { @@ -151,11 +151,11 @@ }, "master": { "locked": { - "lastModified": 1647560508, - "narHash": "sha256-AiRKvhxjZZWIYszcEs+FpvNEyxg5ywO3vH+SyX+14zI=", + "lastModified": 1647935800, + "narHash": "sha256-RluNemNWfuwj0o4uPi1whjFSl0v/x+7aNi8mdPYaQro=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b4f7a460fbf43787d1e1ed3b9cec2df00a55c882", + "rev": "74c1fd0b5ee7d2a0bf9754dd2bc0f41a73ed32a7", "type": "github" }, "original": { @@ -194,11 +194,11 @@ }, "locked": { "dir": "contrib", - "lastModified": 1647494484, - "narHash": "sha256-8CWqEy8jpY0CJDjXKPbK9uYlZYT+vR6HQ39TQFXPcsY=", + "lastModified": 1647877279, + "narHash": "sha256-uvQvyj0XS4pOIkpfApDaMFVWClmVpsTLQRQxvTJcBLA=", "owner": "neovim", "repo": "neovim", - "rev": "d238b8f6003d34cae7f65ff7585b48a2cd9449fb", + "rev": "0c02e8a62b1570be15db01d45969d2759a7f37bf", "type": "github" }, "original": { @@ -214,11 +214,11 @@ "utils": "utils_3" }, "locked": { - "lastModified": 1647368676, - "narHash": "sha256-pn262ck0TNbqYKO90smr3YgzWeCCkFriDOSJcTOkUW4=", + "lastModified": 1647879455, + "narHash": "sha256-BYZKNwl8DV+PRqLeCyY1ambhd4jxCAQeQSNG0dprtLY=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "6e3f57f9c14ceb90ef83f1a40b96b14c85a8eede", + "rev": "5258eb84d2b275f336a3b93026d406c8e1ebde04", "type": "github" }, "original": { @@ -287,11 +287,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1645162597, - "narHash": "sha256-S4sRtJBqVlBg4H7EPAv0NFofGNCayHEMpLnUzGNCCKM=", + "lastModified": 1647734733, + "narHash": "sha256-LFYY+NhTgx++EtehrktrY4ZcsEIgd3+8dd1ZYb9NyQo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b715fcd9d9e26b99182d902c6b5694be0daae6d5", + "rev": "b8f8b90b90ac713eb7f5cc7eb2100141ee29751d", "type": "github" }, "original": { @@ -318,11 +318,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1647297614, - "narHash": "sha256-ulGq3W5XsrBMU/u5k9d4oPy65pQTkunR4HKKtTq0RwY=", + "lastModified": 1647800324, + "narHash": "sha256-rjwoxrk16zfrcO5Torh6CbAd5GHsHrXw+EwxOvh9AUI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "73ad5f9e147c0d2a2061f1d4bd91e05078dc0b58", + "rev": "9bc841fec1c0e8b9772afa29f934d2c7ce57da8e", "type": "github" }, "original": { @@ -350,11 +350,11 @@ }, "nur": { "locked": { - "lastModified": 1647546024, - "narHash": "sha256-qu/RbUkx8WUYwwWRoHW9wAE61LQ17PMc93v9jZm6PDE=", + "lastModified": 1647935829, + "narHash": "sha256-a255Dx1BygB18ZMeD72KAsm0mDqX8rCwZw6dlc/ngrc=", "owner": "nix-community", "repo": "NUR", - "rev": "5ad38a2b7522d3b18f73eab7a4c573244b90c18e", + "rev": "d96e19df518dd14a873c1c2d09a77324bc26dcfe", "type": "github" }, "original": { @@ -370,11 +370,11 @@ "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1647504937, - "narHash": "sha256-zL+TCRbdypKSFxab09lU4uR52MusKf7vzo50ee6fVIs=", + "lastModified": 1647936981, + "narHash": "sha256-GhtaXevrBE/iMQ400UZZZWnGt8QEosO9HN2o13CSmNE=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "1de1018a5810fd123f0f57798cac2a2a8df6bb85", + "rev": "7d3571d6adc7968db62c9e78b039bd295c3ff33f", "type": "github" }, "original": { @@ -423,11 +423,11 @@ "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1647483960, - "narHash": "sha256-DotGgzHOm+MQjoCyOG56n02HBpTak1s7yDH9gyNI8ME=", + "lastModified": 1647916392, + "narHash": "sha256-xiZ4Bzj2KLzphnBh6zMBKm/Icc7grN8CcaFepXhx8y4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "34dd07a5d195f33b7060468c854b0199b5f7b232", + "rev": "a4ba09b440c10a45124aa75667c36549ddadac4d", "type": "github" }, "original": { @@ -438,11 +438,11 @@ }, "stable": { "locked": { - "lastModified": 1647282937, - "narHash": "sha256-K8Oo6QyFCfiEWTRpQVfzcwI3YNMKlz6Tu8rr+o3rzRQ=", + "lastModified": 1647624696, + "narHash": "sha256-6u7WHfTGPbo21p3j23hJmkE0CtJCklrRE/aHm0uavIg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "64fc73bd74f04d3e10cb4e70e1c65b92337e76db", + "rev": "60779b2fde21d3d48bc1999fc0ce6540eba07924", "type": "github" }, "original": { @@ -487,11 +487,11 @@ "flake-utils": "flake-utils" }, "locked": { - "lastModified": 1639385028, - "narHash": "sha256-oqorKz3mwf7UuDJwlbCEYCB2LfcWLL0DkeCWhRIL820=", + "lastModified": 1647259887, + "narHash": "sha256-yEkMbEHVO9qydluQ3uHGWX1PkfZhgDKxnd1rhZYZ72w=", "owner": "gytis-ivaskevicius", "repo": "flake-utils-plus", - "rev": "be1be083af014720c14f3b574f57b6173b4915d0", + "rev": "06dba5f3b4fa2cc0bfc98ce9cd6f9a4d8db11d46", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 98601d3..5ddf3a4 100644 --- a/flake.nix +++ b/flake.nix @@ -56,7 +56,7 @@ ( let personalModules = [ - ./modules/nvidia-offload.nix + ./modules/graphics.nix ./modules/sound.nix ./modules/xorg.nix ]; diff --git a/home/natto/config/dunst/dunstrc b/home/natto/config/dunst/dunstrc index 7c0a600..b7d1409 100644 --- a/home/natto/config/dunst/dunstrc +++ b/home/natto/config/dunst/dunstrc @@ -17,7 +17,7 @@ padding = 5 text_icon_padding = 4 frame_width = 3 - frame_color = "#ebdbb2" + frame_color = "#268bd2" separator_color = frame sort = yes idle_threshold = 120 @@ -50,17 +50,17 @@ ignore_dbusclose = false [urgency_low] - background = "#222222" - foreground = "#888888" + background = "#6c71c4" + foreground = "#eee8d5" timeout = 10 [urgency_normal] - background = "#285577" - foreground = "#ffffff" + background = "#cb4b16" + foreground = "#eee8d5" timeout = 10 [urgency_critical] - background = "#900000" - foreground = "#ffffff" - frame_color = "#ff0000" + background = "#dc322f" + foreground = "#eee8d5" + frame_color = "#d33682" timeout = 10 diff --git a/home/natto/config/emacs/config.org b/home/natto/config/emacs/config.org index 66b80af..ad5f10b 100644 --- a/home/natto/config/emacs/config.org +++ b/home/natto/config/emacs/config.org @@ -26,12 +26,10 @@ c-cyan-2 "#93a1a1" c-white-2 "#fdf6e3") #+end_src - * Settings ** Setting the default face #+begin_src emacs-lisp (setq default-frame-alist '((font . "Monoid-12"))) - #+end_src ** Some mode settings based on personal preferences @@ -43,18 +41,22 @@ c-white-2 "#fdf6e3") (fringe-mode 0) ;(cua-mode 1) (global-display-line-numbers-mode 1) +(xterm-mouse-mode 1) #+end_src ** Setting some variables +SCHEDULED: <2022-03-19 Sat> #+begin_src emacs-lisp -(setq initial-major-mode 'emacs-lisp-mode - frame-resize-pixelwise t - auto-window-vscroll nil - scroll-step 1 - display-line-numbers-type 'relative - confirm-kill-processes nil - inhibit-startup-screen t) -(setq dark-theme t) + (setq initial-major-mode 'emacs-lisp-mode + frame-resize-pixelwise t + auto-window-vscroll nil + scroll-step 1 + display-line-numbers-type 'relative + confirm-kill-processes nil + dark-theme t + inhibit-startup-screen t) + (setq-default tab-width 2 + indent-tabs-mode nil) #+end_src ** Emacs startup hook @@ -63,7 +65,6 @@ c-white-2 "#fdf6e3") (lambda () (delete-other-windows)) t) #+end_src - * Packages ** Add Melpa to package archives #+begin_src emacs-lisp @@ -129,11 +130,12 @@ Add orderless for selectrum *** Configure evil mode #+begin_src emacs-lisp (use-package evil + :init + (setq-default evil-shift-width 2) :config (evil-set-initial-state 'vterm-mode 'insert) (evil-set-undo-system 'undo-tree) - (evil-mode 1) - (setq-default evil-shift-width 2)) + (evil-mode 1)) #+end_src *** Configure undo tree @@ -155,16 +157,22 @@ To get colemak-dh bindings in evil mode #+end_src ** Treemacs +*** Dependencies +#+begin_src emacs-lisp +(use-package cfrs) +#+end_src + *** Configure treemacs #+begin_src emacs-lisp (use-package treemacs + :atfer cfrs :config (treemacs-filewatch-mode 1) (treemacs-display-current-project-exclusively) - (treemacs-git-mode 'deferred)) + (treemacs-git-mode 'simple)) #+end_src -** Configure treemacs-evil +*** Configure treemacs-evil Configure treemacs-evil to get colemak-dh bindings #+begin_src emacs-lisp (use-package treemacs-evil :config @@ -175,9 +183,8 @@ Configure treemacs-evil to get colemak-dh bindings (define-key evil-treemacs-state-map (kbd "M-N") #'treemacs-next-line-other-window) (define-key evil-treemacs-state-map (kbd "M-E") #'treemacs-previous-line-other-window) ; (define-key evil-treemacs-state-map (kbd "M") #'treemacs-collapse-parent-node) - (evil-define-key 'treemacs treemacs-mode-map (kbd "m") #'treemacs-COLLAPSE-action) - (evil-define-key 'treemacs treemacs-mode-map (kbd "i") #'treemacs-RET-action) - (evil-define-key 'normal org-mode-map (kbd "") #'org-cycle) + (define-key evil-treemacs-state-map (kbd "m") #'treemacs-COLLAPSE-action) + (define-key evil-treemacs-state-map (kbd "i") #'treemacs-RET-action) ) #+end_src @@ -211,6 +218,14 @@ Configure treemacs-evil to get colemak-dh bindings (lsp-ui-doc-enable 1)) #+end_src +*** Configure flycheck +#+begin_src emacs-lisp +(use-package flycheck) +#+end_src +*** Configure dap-mode +#+begin_src emacs-lisp +(use-package dap-mode) +#+end_src ** Company *** Configure company For autocomplete @@ -251,7 +266,7 @@ For autocomplete :mode "\\.nix\\'") (use-package hcl-mode - :mode + :mod "\\.hcl\\'" "\\.nomad\\'") #+end_src @@ -261,7 +276,6 @@ For autocomplete (use-package magit) #+end_src - * VTerm ** Configure vterm #+begin_src emacs-lisp @@ -294,24 +308,6 @@ For autocomplete (set-face-attribute 'tab-line nil :inherit 'centaur-tabs-unselected)) #+end_src -** Org -*** Add org-mode -#+begin_src emacs-lisp -(use-package org) -#+end_src - -*** Add org-bullets -#+begin_src emacs-lisp - (use-package org-bullets - :config - (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) -#+end_src - -*** Add helper packages for exporting -#+begin_src emacs-lisp - (use-package htmlize) -#+end_src - ** Misc packages #+begin_src emacs-lisp (use-package elcord @@ -330,11 +326,33 @@ For autocomplete :config (rainbow-mode 1)) -(use-package all-the-icons) +(use-package treemacs-all-the-icons) (use-package general) #+end_src +* Org +** Add org-mode +#+begin_src emacs-lisp +(use-package org + :after evil + :config + (define-key org-mode-map (kbd "RET") 'org-return-and-maybe-indent) + (setq evil-want-C-i-jump nil) + (evil-define-key 'normal org-mode-map (kbd "TAB") 'org-cycle)) +#+end_src + +** Add org-bullets +#+begin_src emacs-lisp + (use-package org-bullets + :config + (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))) +#+end_src + +** Add helper packages for exporting +#+begin_src emacs-lisp + (use-package htmlize) +#+end_src * Mode specific hooks #+begin_src emacs-lisp @@ -342,7 +360,6 @@ For autocomplete (add-hook 'c++-mode-hook 'lsp) #+end_src - * Custom mode line #+begin_src emacs-lisp (defface mode-line-buf-name @@ -396,12 +413,11 @@ For autocomplete ((evil-normal-state-p) (cons c-fg c-bg)) ((buffer-modified-p) (cons c-blue c-fg)) (t default-color)))) - (set-face-background 'bufname (car color)) - (set-face-foreground 'bufname (cdr color)) + (set-face-background 'mode-line-buf-name (car color)) + (set-face-foreground 'mode-line-buf-name (cdr color)) )))) #+end_src - * Pop-up terminal Stolen from [[https://www.reddit.com/r/emacs/comments/ft84xy/run_shell_command_in_new_vterm/][this]] reddit post #+begin_src emacs-lisp @@ -447,7 +463,6 @@ This returns the command to run in the terminal ("rs" (concat "rustc" full " -o " file " && " file " && rm " file))))) #+end_src - * Keybinds ** General #+begin_src emacs-lisp diff --git a/home/natto/pkgs.nix b/home/natto/pkgs.nix index 698cff6..e20345c 100644 --- a/home/natto/pkgs.nix +++ b/home/natto/pkgs.nix @@ -72,5 +72,6 @@ mailcap element-desktop syncplay + betterdiscordctl ]; } diff --git a/home/natto/programs.nix b/home/natto/programs.nix index 9d9c370..ef3a611 100644 --- a/home/natto/programs.nix +++ b/home/natto/programs.nix @@ -38,6 +38,8 @@ enable = true; mpdMusicDir = ~/Music; settings = { + albumart = "yes"; + locked_screen_width_part = 25; autocenter_mode = "yes"; follow_now_playing_lyrics = "yes"; lyrics_directory = "~/.lyrics"; @@ -46,16 +48,16 @@ browser_sort_mode = "mtime"; colors_enabled = "yes"; main_window_color = "white"; - header_window_color = "143"; - volume_color = "222"; - progressbar_color = "143"; + header_window_color = "green"; + volume_color = "yellow"; + progressbar_color = "green"; # progressbar_elapsed_color = ""; # statusbar_color = "43"; active_window_border = "blue"; user_interface = "alternative"; #song_list_format="(4)[230]{l}"; - song_columns_list_format = "(4)[167]{l} (20)[109]{t} (12)[143]{a} (16)[139]{b}"; - song_list_format = "$(222){%a} - $(109){%t}"; + song_columns_list_format = "(4)[red]{l} (20)[cyan]{t} (25)[green]{a} (25)[magenta]{b}"; + song_list_format = "$(yellow){%a} - $(blue){%t}"; #song_list_format = "{$7%a - $9}{$5%t$9}|{$5%f$9}$R{$6%b $9}{$3%l$9}"; song_status_format = " $6%a $7⟫⟫ $3%t $7⟫⟫ $4%b "; visualizer_data_source = "/tmp/g.fifo"; diff --git a/home/natto/services.nix b/home/natto/services.nix index 6d3b87e..27351b0 100644 --- a/home/natto/services.nix +++ b/home/natto/services.nix @@ -86,6 +86,12 @@ in type "pulse" name "pulse audio" } + audio_output { + type "fifo" + name "Visualizer feed" + path "/tmp/g.fifo" + format "44100:16:2" + } audio_output { encoder "vorbis" type "httpd" diff --git a/home/natto/stuff.nix b/home/natto/stuff.nix index e1e2e50..5ae3d1c 100644 --- a/home/natto/stuff.nix +++ b/home/natto/stuff.nix @@ -6,6 +6,7 @@ { sessionVariables = { LV2_PATH = lib.makeSearchPath "lib/lv2" (with pkgs; [ calf ]); + TERM = "st-24bits"; }; file = { dunstrc = { diff --git a/home/natto/xsession.nix b/home/natto/xsession.nix index 262edfb..9440c6f 100644 --- a/home/natto/xsession.nix +++ b/home/natto/xsession.nix @@ -1,15 +1,11 @@ { pkgs, config, ... }: { + gtk.cursorTheme = { + package = pkgs.numix-cursor-theme; + name = "Numix"; + }; xsession = { - pointerCursor = { - package = pkgs.numix-cursor-theme; - name = "Numix"; - }; windowManager = { - bspwm = { - enable = false; - extraConfig = builtins.readFile ./config/bspwm/bspwmrc; - }; xmonad = { enable = true; enableContribAndExtras = true; diff --git a/hosts/README.md b/hosts/README.md deleted file mode 100644 index a909ca3..0000000 --- a/hosts/README.md +++ /dev/null @@ -1,3 +0,0 @@ -Satori is my home laptop\ -Marisa is my Raspberry Pi 4 (B)\ -Remilia is my cloud VM diff --git a/hosts/README.org b/hosts/README.org new file mode 100644 index 0000000..6732fc3 --- /dev/null +++ b/hosts/README.org @@ -0,0 +1,3 @@ ++ Satori is my home laptop ++ Marisa is my Raspberry Pi 4 (B) ++ Remilia is my cloud VM diff --git a/hosts/satori/pkgs.nix b/hosts/satori/pkgs.nix index 495a848..b1b28cf 100644 --- a/hosts/satori/pkgs.nix +++ b/hosts/satori/pkgs.nix @@ -7,7 +7,6 @@ bc gnumake pciutils - git ntfs3g python3 htop @@ -33,6 +32,8 @@ rnix-lsp python3Packages.python-lsp-server haskell-language-server + vulkan-tools + vulkan-headers (steam.override { extraLibraries = pkgs: [ pkgs.pipewire ]; extraProfile = '' @@ -50,6 +51,13 @@ pinentryFlavor = "curses"; }; }; + git = { + enable = true; + package = pkgs.master.git.override { + sendEmailSupport = true; + withManual = false; + }; + }; zsh = { enable = true; promptInit = '' @@ -67,7 +75,7 @@ elapsed=$(echo "scale=1; $elapsed/1000" | ${pkgs.bc}/bin/bc -l) unit="s" fi - if (($(echo "$elapsed > 60" | bc -l ))); then + if (( $(echo "$elapsed > 60" | ${pkgs.bc}/bin/bc -l) )) then elapsed=$(echo "scale=2; $elapsed/60" | ${pkgs.bc}/bin/bc -l) unit="m" fi diff --git a/hosts/satori/stuff.nix b/hosts/satori/stuff.nix index 8569c67..c355d3d 100644 --- a/hosts/satori/stuff.nix +++ b/hosts/satori/stuff.nix @@ -13,9 +13,13 @@ sessionVariables = { QT_X11_NO_MITSHM = "1"; QT_QPA_PLATFORMTHEME = "gtk3"; + HM_CONF_DIR = "/etc/nixos"; }; localBinInPath = true; - + shellAliases = rec { + ec = "emacsclient"; + ecc = ec + " -c"; + }; }; security = { sudo.enable = false; diff --git a/modules/graphics.nix b/modules/graphics.nix new file mode 100644 index 0000000..0f11259 --- /dev/null +++ b/modules/graphics.nix @@ -0,0 +1,53 @@ +{ config, pkgs, lib, ... }: +let + nvidia-offload = pkgs.writeShellScriptBin "nvi" '' + export __NV_PRIME_RENDER_OFFLOAD=1 + export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 + export __GLX_VENDOR_LIBRARY_NAME=nvidia + export __VK_LAYER_NV_optimus=NVIDIA_only + exec -a "$0" "$@" + ''; +in +{ + environment.systemPackages = with pkgs; [ + nvidia-offload + ]; + hardware = { + opengl = + let + fn = oa: with lib; { + nativeBuildInputs = oa.nativeBuildInputs ++ singleton pkgs.glslang; + mesonFlags = oa.mesonFlags ++ singleton "-Dvulkan-layers=device-select,overlay"; + patches = oa.patches ++ singleton ./mesa-vulkan-layer-nvidia.patch; + postInstall = oa.postInstall + '' + mv $out/lib/libVkLayer* $drivers/lib + layer=VkLayer_MESA_device_select + substituteInPlace $drivers/share/vulkan/implicit_layer.d/''${layer}.json \ + --replace "lib''${layer}" "$drivers/lib/lib''${layer}" + layer=VkLayer_MESA_overlay + substituteInPlace $drivers/share/vulkan/explicit_layer.d/''${layer}.json \ + --replace "lib''${layer}" "$drivers/lib/lib''${layer}" + ''; + }; + in + with pkgs; { + driSupport32Bit = true; + enable = true; + package = (mesa.overrideAttrs fn).drivers; + package32 = (pkgsi686Linux.mesa.overrideAttrs fn).drivers; + }; + nvidia = { + prime = { + # sync.enable = true; + offload = { enable = true; }; + intelBusId = "PCI:0:2:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + modesetting = { enable = true; }; + }; + }; + services.xserver = { + videoDrivers = [ "nvidia" ]; + dpi = 96; + }; +} diff --git a/modules/mesa-vulkan-layer-nvidia.patch b/modules/mesa-vulkan-layer-nvidia.patch new file mode 100644 index 0000000..143536c --- /dev/null +++ b/modules/mesa-vulkan-layer-nvidia.patch @@ -0,0 +1,17 @@ +diff --color -u -r b/src/vulkan/device-select-layer/device_select_layer.c a/src/vulkan/device-select-layer/device_select_layer.c +--- b/src/vulkan/device-select-layer/device_select_layer.c 2022-03-22 11:18:04.309569433 +0530 ++++ a/src/vulkan/device-select-layer/device_select_layer.c 2022-03-22 11:18:17.944644235 +0530 +@@ -454,12 +454,8 @@ + exit(0); + } else { + unsigned selected_index = get_default_device(info, selection, physical_device_count, physical_devices); +- selected_physical_device_count = physical_device_count; ++ selected_physical_device_count = 1; + selected_physical_devices[0] = physical_devices[selected_index]; +- for (unsigned i = 0; i < physical_device_count - 1; ++i) { +- unsigned this_idx = i < selected_index ? i : i + 1; +- selected_physical_devices[i + 1] = physical_devices[this_idx]; +- } + } + + if (selected_physical_device_count == 0) { diff --git a/modules/nvidia-offload.nix b/modules/nvidia-offload.nix deleted file mode 100644 index 4d65810..0000000 --- a/modules/nvidia-offload.nix +++ /dev/null @@ -1,39 +0,0 @@ -{config, pkgs, ... }: -let - nvidia-offload = pkgs.writeShellScriptBin "nvi" '' - export __NV_PRIME_RENDER_OFFLOAD=1 - export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 - export __GLX_VENDOR_LIBRARY_NAME=nvidia - export __VK_LAYER_NV_optimus=NVIDIA_only - exec -a "$0" "$@" - ''; -in - { - environment.systemPackages = with pkgs; [ - nvidia-offload - ]; - hardware = { - opengl = { - driSupport32Bit = true; - # extraPackages32 = with pkgs.pkgsi686Linux; [ libva ]; - enable = true; - }; - nvidia = { - prime = { - # sync.enable = true; - offload = { enable = true; }; - intelBusId = "PCI:0:2:0"; - nvidiaBusId = "PCI:1:0:0"; - }; - modesetting = { enable = true; }; - /* powerManagement = { - enable = true; - finegrained = true; - };*/ - }; - }; - services.xserver = { - videoDrivers = [ "nvidia" ]; - dpi = 96; - }; - } diff --git a/hm-switch b/overlays/customscripts/src/hm-switch similarity index 56% rename from hm-switch rename to overlays/customscripts/src/hm-switch index f7718b1..653c550 100755 --- a/hm-switch +++ b/overlays/customscripts/src/hm-switch @@ -1,14 +1,19 @@ #!/usr/bin/env bash +flakeDir=$HM_CONF_DIR; +if [ -z "$HM_CONF_DIR" ]; then + echo "HM_CONF_DIR is unset, using current directory as the flake directory" + flakeDir=. +fi + echo "You're about to switch your home-manager configuration as '$USER'" read -p "Continue (y/n)?" conf if [[ ${conf,,} =~ ^(y|yes)$ ]]; then - nix build .\#hm-configs.$USER.activationPackage -o hm-result && + nix build "$flakeDir"\#hm-configs.$USER.activationPackage -o hm-result && ./hm-result/activate unlink hm-result else echo "If this is not you, then log into your profile first!" exit 1 fi -