Update fennel + awesomewm config
+ Bumped fennel: 0.8.1 -> 0.9.2. + Use luajit for awesomewm + fennel. + Add barebones awesomewm fennel config (more to come later).
This commit is contained in:
		
							parent
							
								
									f894614a37
								
							
						
					
					
						commit
						b9d3279034
					
				
							
								
								
									
										111
									
								
								config/awesome/init.fnl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								config/awesome/init.fnl
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,111 @@ | ||||||
|  | (local gears   (require :gears)) | ||||||
|  | (local awful   (require :awful)) | ||||||
|  | (local naughty (require :naughty)) | ||||||
|  | (require :awful.autofocus) | ||||||
|  | 
 | ||||||
|  | (local wincmd (require :commands.window)) | ||||||
|  | (local tagcmd (require :commands.tag)) | ||||||
|  | (local pa     (require :utils.pulseaudio)) | ||||||
|  | (local input  (require :utils.input)) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | (fn initialize [bindings] | ||||||
|  |   ;; Error handling | ||||||
|  |   ;; Check if awesome encountered an error during startup and fell back to | ||||||
|  |   ;; another config (This code will only ever execute for the fallback config) | ||||||
|  |   (let [preset { :timeout 0 :bg "#000000" :fg "#ff0000" :max_height 1080 }] | ||||||
|  |     (when awesome.startup_errors | ||||||
|  |       (naughty.notify {:preset preset | ||||||
|  |                        :title "Oops, there were errors during startup!" | ||||||
|  |                        :text awesome.startup_errors})) | ||||||
|  | 
 | ||||||
|  |     (var in-error false) | ||||||
|  |     (awesome.connect_signal | ||||||
|  |      "debug::error" | ||||||
|  |      (fn [] | ||||||
|  |        ;; Make sure we don't go into an endless error loop | ||||||
|  |        (when (not in-error) | ||||||
|  |          (set in-error true) | ||||||
|  |          (naughty.notify {:preset preset | ||||||
|  |                           :title "Oops, an error happened!" | ||||||
|  |                           :text (tostring err)}) | ||||||
|  |          (naughty.notify {:preset preset | ||||||
|  |                           :title "Oops, an error happened!" | ||||||
|  |                           :text (tostring err)}) | ||||||
|  |          (set in-error false))))) | ||||||
|  | 
 | ||||||
|  |   (root.keys bindings.global-keys) | ||||||
|  | 
 | ||||||
|  |   (naughty.notify {:text "Glorious fennel"}) | ||||||
|  |   (gears.wallpaper.set "#282c34")) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | (local | ||||||
|  |  bindings | ||||||
|  |  { | ||||||
|  |   :global-keys | ||||||
|  |   (gears.table.join | ||||||
|  | 
 | ||||||
|  |    (input.key-group | ||||||
|  |     "awesome" | ||||||
|  |     [[:mod] :s hotkeys_popup.show_help "show help"] | ||||||
|  |     [[:mod :shift] :r awesome.restart "reload config"] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |    (input.key-group | ||||||
|  |     "exec" | ||||||
|  |     [[:mod] :space (fn [] (awful.util.spawn "rofi -show run")) "app launcher"] | ||||||
|  |     [[:mod] :e (fn [] (awful.util.spawn "emacsclient -c -n -e '(switch-to-buffer nil)'")) "emacs"] | ||||||
|  |     [[:mod] :v (fn [] | ||||||
|  |                  (let [option "gopass ls --flat" | ||||||
|  |                        prompt "rofi -dmenu -p pass" | ||||||
|  |                        action "xargs --no-run-if-empty gopass show -c" | ||||||
|  |                        cmd (.. option " | " prompt " | " action)] | ||||||
|  |                    (awful.spawn.easy_async_with_shell cmd (fn [])))) | ||||||
|  |      "secret vault"] | ||||||
|  |     [[:mod] :Return (fn [] (awful.spawn "xst")) "open terminal"] | ||||||
|  |     [[] :XF86AudioMute pa.toggle-muted "⏼ audio muted"] | ||||||
|  |     [[] :XF86AudioMicMute pa.toggle-mic-mute "⏼ mic muted"] | ||||||
|  |     [[] :XF86AudioRaiseVolume (fn [] (pa.adjust-volume 5)) "raise volume"] | ||||||
|  |     [[] :XF86AudioLowerVolume (fn [] (pa.adjust-volume -5)) "lower volume"] | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |    (input.key-group | ||||||
|  |     "client" | ||||||
|  |     [[:mod] :h        (fn [] (awful.client.focus.bydirection :left))  "focus left"] | ||||||
|  |     [[:mod] :j        (fn [] (awful.client.focus.bydirection :down))  "focus down"] | ||||||
|  |     [[:mod] :k        (fn [] (awful.client.focus.bydirection :up))    "focus up"] | ||||||
|  |     [[:mod] :l        (fn [] (awful.client.focus.bydirection :right)) "focus right"] | ||||||
|  |     [[:mod] :n        (fn [] (awful.client.focus.byidx 1))            "focus next"] | ||||||
|  |     [[:mod] :p        (fn [] (awful.client.focus.byidx -1))           "focus previous"] | ||||||
|  |     [[:mod :shift] :j (fn [] (awful.client.swap.byidx 1))             "swap next with previous"] | ||||||
|  |     [[:mod :shift] :k (fn [] (awful.client.swap.byidx -1))            "swap next with previous"] | ||||||
|  |     ) | ||||||
|  |    ) | ||||||
|  | 
 | ||||||
|  |   :client-keys | ||||||
|  |   (gears.table.join | ||||||
|  |    (input.key-group | ||||||
|  |     "client" | ||||||
|  |     [[:mod] :n wincmd.minimize "minimize"] | ||||||
|  |     [[:mod] :t wincmd.toggle-ontop "⏼ keep on top"] | ||||||
|  |     [[:mod] :m wincmd.toggle-maximized "⏼ maximize"] | ||||||
|  |     [[:mod] :f wincmd.toggle-fullscreen "⏼ fullscreen"] | ||||||
|  |     [[:mod :ctrl] :space awful.client.floating.toggle "⏼ floating"] | ||||||
|  |     [[:mod :ctrl] :Return wincmd.move-to-master "move to master"] | ||||||
|  |     [[:mod :ctrl] :m wincmd.toggle-maximize-vertical "⏼ max vertically"] | ||||||
|  |     [[:mod :shift] :m wincmd.toggle-maximize-horizontal "⏼ max horizontally"] | ||||||
|  |     [[:mod :shift] :c wincmd.close "close"] | ||||||
|  |     )) | ||||||
|  | 
 | ||||||
|  |   :client-buttons | ||||||
|  |   (gears.table.join | ||||||
|  |    (input.mousebind [] input.left-click client.mouse-raise) | ||||||
|  |    (input.mousebind [:mod] input.left-click client.mouse-drag-move) | ||||||
|  |    (input.mousebind [:mod] input.right-click client.mouse-drag-resize) | ||||||
|  |    ) | ||||||
|  |   }) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ;; | ||||||
|  | (initialize bindings) | ||||||
							
								
								
									
										57
									
								
								modules/desktop/awesomewm.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								modules/desktop/awesomewm.nix
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | ||||||
|  | { options, config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | with lib; | ||||||
|  | with lib.my; | ||||||
|  | let cfg = config.modules.desktop.awesomewm; | ||||||
|  |     configDir = config.dotfiles.configDir; | ||||||
|  | in { | ||||||
|  |   options.modules.desktop.awesomewm = { | ||||||
|  |     enable = mkBoolOpt false; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     nixpkgs.overlays = [ | ||||||
|  |       (self: super: with super; { | ||||||
|  |         awesome = super.awesome.override { luaPackages = super.luajitPackages; }; | ||||||
|  |       }) | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     environment.systemPackages = with pkgs; [ | ||||||
|  |       luajit | ||||||
|  |       my.fennel | ||||||
|  |     ]; | ||||||
|  | 
 | ||||||
|  |     services = { | ||||||
|  |       picom.enable = true; | ||||||
|  |       redshift.enable = true; | ||||||
|  |       xserver = { | ||||||
|  |         enable = true; | ||||||
|  |         displayManager = { | ||||||
|  |           lightdm.enable = true; | ||||||
|  |         #  lightdm.greeters.mini.enable = true; | ||||||
|  |         }; | ||||||
|  |         windowManager.awesome.enable = true; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     home.configFile = { | ||||||
|  |       "awesome" = { source = "${configDir}/awesome"; recursive = true; }; | ||||||
|  |       "awesome/rc.lua".text = '' | ||||||
|  |         -- File was auto-generated by nix. Do not touch! | ||||||
|  | 
 | ||||||
|  |         -- Load system fennel | ||||||
|  |         package.path = package.path .. ";${pkgs.my.fennel}/?.lua" | ||||||
|  |         local fennel = require("fennel") | ||||||
|  |         debug.traceback = fennel.traceback | ||||||
|  | 
 | ||||||
|  |         -- Then load our awesomewm config | ||||||
|  |         fennel.path = fennel.path .. ";.config/awesome/?.fnl" | ||||||
|  |         table.insert(package.loaders or package.searchers, fennel.makeSearcher({ | ||||||
|  |             correlate    = true, | ||||||
|  |             useMetadata  = true | ||||||
|  |         })) | ||||||
|  |         require("init") | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -1,13 +1,13 @@ | ||||||
| { lib, stdenv, luajit, my, ... }: | { lib, stdenv, luajit, my, ... }: | ||||||
| 
 | 
 | ||||||
| let name = "fennel"; | let name = "fennel"; | ||||||
|     version = "0.8.1"; |     version = "0.9.2"; | ||||||
| in stdenv.mkDerivation { | in stdenv.mkDerivation { | ||||||
|   inherit name version; |   inherit name version; | ||||||
| 
 | 
 | ||||||
|   src = fetchTarball { |   src = fetchTarball { | ||||||
|     url = "https://fennel-lang.org/downloads/${name}-${version}.tar.gz"; |     url = "https://fennel-lang.org/downloads/${name}-${version}.tar.gz"; | ||||||
|     sha256 = "0hzxnsgq4yqsvzkndplcllvq3j8cw45npqyrqa2ww8jv5abr183i"; |     sha256 = "0p9zr2vb9gq877advb5jvybx6dmqzmxqh4i7yzdr7fwvz7xzd2jv"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   buildInputs = [ |   buildInputs = [ | ||||||
|  | @ -16,10 +16,11 @@ in stdenv.mkDerivation { | ||||||
| 
 | 
 | ||||||
|   phases = "installPhase"; |   phases = "installPhase"; | ||||||
|   installPhase = '' |   installPhase = '' | ||||||
|     mkdir -p $out/bin |     mkdir -p $out $out/bin | ||||||
|     cp $src/fennel $out/bin/fennel |     cp $src/fennel $out/bin/fennel | ||||||
|  |     cp $src/fennel.lua $out/fennel.lua | ||||||
|     chmod +x $out/bin/fennel |     chmod +x $out/bin/fennel | ||||||
|     sed -i 's%^#!/usr/bin/env lua$%#!${luajit}/bin/lua%' $out/bin/fennel |     sed -i 's%^#!/usr/bin/env lua$%#!${luajit}/bin/luajit%' $out/bin/fennel | ||||||
|   ''; |   ''; | ||||||
| 
 | 
 | ||||||
|   meta = { |   meta = { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue