this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ft: add home-manager and move stuff there

+707 -1255
+3 -2
Makefile
··· 1 - TARGETS ?= fish vim kitty git ctags wm misc 1 + TARGETS ?= vim wm misc 2 2 3 3 all: nix $(TARGETS) 4 4 ··· 6 6 @printf "%s\t" $@ 7 7 @printf "\033[32m✓" || printf "\033[31m✗" 8 8 @printf "\033[m\n" 9 - @darwin-rebuild switch --flake dotfiles 9 + @nix run '.#system' -- switch 10 + @nix run '.#home' -- switch 10 11 11 12 $(TARGETS): check 12 13 @printf "%s\t" $@
-3
ctags/.config/ctags/elixir.ctags
··· 1 - --exclude=_build 2 - --exclude=deps 3 - --exclude=.elixir_ls
-17
ctags/.config/ctags/excludes.ctags
··· 1 - --exclude=.git 2 - --exclude=.pijul 3 - --exclude=.hg 4 - --exclude=log 5 - --exclude=tmp 6 - --exclude=.direnv 7 - 8 - --fields=+l 9 - --fields=+n 10 - --fields=+z 11 - --fields=+Z 12 - 13 - --exclude=tests 14 - --exclude=test 15 - 16 - --exclude=.projections.json 17 - --exclude=coveralls.json
-4
ctags/.config/ctags/javascript.ctags
··· 1 - --exclude=node_modules 2 - --exclude=project.json 3 - --exclude=package-lock.json 4 - --exclude=yarn.lock
-1
ctags/.config/ctags/rust.ctags
··· 1 - --exclude=target
+17 -5
dev_shells.nix
··· 1 - { mkShell, beam, pkgs }: { 1 + { 2 + mkShell, 3 + beam, 4 + pkgs, 5 + lib, 6 + stdenv, 7 + darwin, 8 + }: { 2 9 livebook = pkgs.mkShell { 3 10 packages = with beam.packages.erlang; [ 4 11 livebook ··· 18 25 19 26 elixir = with beam.packages.erlang; 20 27 mkShell { 21 - packages = [ 22 - elixir 23 - elixir_ls 24 - ]; 28 + packages = 29 + [ 30 + elixir 31 + elixir-ls 32 + ] 33 + ++ lib.optionals stdenv.isDarwin [ 34 + darwin.apple_sdk.frameworks.CoreFoundation 35 + darwin.apple_sdk.frameworks.CoreServices 36 + ]; 25 37 }; 26 38 27 39 rust = mkShell {
-6
fish/.config/fish/.gitignore
··· 1 - /fishd.* 2 - /fish_history 3 - /fundle 4 - /functions/fundle.fish 5 - /fish_variables 6 - /config.fish
-5
fish/.config/fish/completions/wiki.fish
··· 1 - complete -f -c wiki -xa diary -d 'Open Diary index' 2 - complete -f -c wiki -xa today -d 'Open today Diary entry' 3 - complete -f -c wiki -xa yesterday -d 'Open yesterday Diary entry' 4 - complete -f -c wiki -xa tomorrow -d 'Open tomorrow Diary entry' 5 - complete -f -c wiki -xa index -d 'Open Wiki index'
-3
fish/.config/fish/functions/ix.fish
··· 1 - function ix 2 - curl --netrc-optional -F 'f:1=@-' ix.io | pbcopy 3 - end
-7
fish/.config/fish/functions/p.fish
··· 1 - function p 2 - if test (count $argv) -gt 0 && test -f $argv[1] || not isatty 3 - bat $argv 4 - else 5 - ls -Alh $argv 6 - end 7 - end
-25
fish/.config/fish/functions/wiki.fish
··· 1 - function wiki 2 - set -l comm index 3 - set -l editor nvim 4 - 5 - if set -q NVIM_LISTEN_ADDRESS 6 - set editor nvr -cc split 7 - end 8 - 9 - if test (count $argv) -gt 0 10 - set comm $argv[1] 11 - end 12 - 13 - switch $comm 14 - case diary d 15 - eval "$editor" +VimwikiDiaryIndex 16 - case today t 17 - eval "$editor" +VimwikiMakeDiaryNote 18 - case yesterday y 19 - eval "$editor" +VimwikiMakeYesterdayDiaryNote 20 - case tomorrow a 21 - eval "$editor" +VimwikiMakeTomorrowDiaryNote 22 - case '' index i 23 - eval "$editor" +VimwikiIndex 24 - end 25 - end
+42 -6
flake.lock
··· 45 45 }, 46 46 "flake-utils": { 47 47 "locked": { 48 - "lastModified": 1676283394, 49 - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", 48 + "lastModified": 1678901627, 49 + "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", 50 50 "owner": "numtide", 51 51 "repo": "flake-utils", 52 - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", 52 + "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", 53 53 "type": "github" 54 54 }, 55 55 "original": { ··· 72 72 "type": "github" 73 73 } 74 74 }, 75 + "home-manager": { 76 + "inputs": { 77 + "nixpkgs": [ 78 + "nixpkgs" 79 + ], 80 + "utils": "utils" 81 + }, 82 + "locked": { 83 + "lastModified": 1680000368, 84 + "narHash": "sha256-TlgC4IJ7aotynUdkGRtaAVxquaiddO38Ws89nB7VGY8=", 85 + "owner": "nix-community", 86 + "repo": "home-manager", 87 + "rev": "765e4007b6f9f111469a25d1df6540e8e0ca73a6", 88 + "type": "github" 89 + }, 90 + "original": { 91 + "id": "home-manager", 92 + "type": "indirect" 93 + } 94 + }, 75 95 "nix-elixir": { 76 96 "inputs": { 77 97 "flake-utils": "flake-utils_2", ··· 107 127 }, 108 128 "nixpkgs_2": { 109 129 "locked": { 110 - "lastModified": 1676150441, 111 - "narHash": "sha256-Nfeua9Ua/dGHOQpzOjLtkyMyW/ysQCvZJ9Dd74QQSNk=", 130 + "lastModified": 1679793451, 131 + "narHash": "sha256-JafTtgMDATE8dZOImBhWMA9RCn9AP8FVOpN+9K/tTlg=", 112 132 "owner": "NixOS", 113 133 "repo": "nixpkgs", 114 - "rev": "6d87734c880d704f6ee13e5c0fe835b98918c34e", 134 + "rev": "0cd51a933d91078775b300cf0f29aa3495231aa2", 115 135 "type": "github" 116 136 }, 117 137 "original": { ··· 125 145 "agnoster": "agnoster", 126 146 "darwin": "darwin", 127 147 "flake-utils": "flake-utils", 148 + "home-manager": "home-manager", 128 149 "nix-elixir": "nix-elixir", 129 150 "nixpkgs": "nixpkgs_2" 151 + } 152 + }, 153 + "utils": { 154 + "locked": { 155 + "lastModified": 1676283394, 156 + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", 157 + "owner": "numtide", 158 + "repo": "flake-utils", 159 + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", 160 + "type": "github" 161 + }, 162 + "original": { 163 + "owner": "numtide", 164 + "repo": "flake-utils", 165 + "type": "github" 130 166 } 131 167 } 132 168 },
+83 -46
flake.nix
··· 4 4 inputs = { 5 5 nixpkgs.url = "nixpkgs/nixpkgs-unstable"; 6 6 flake-utils.url = "flake:flake-utils"; 7 + home-manager = { 8 + url = "flake:home-manager"; 9 + inputs.nixpkgs.follows = "nixpkgs"; 10 + }; 7 11 agnoster = { 8 12 url = "github:hauleth/agnoster"; 9 13 inputs.nixpkgs.follows = "nixpkgs"; ··· 17 21 }; 18 22 }; 19 23 20 - outputs = 21 - { self 22 - , darwin 23 - , nixpkgs 24 - , agnoster 25 - , flake-utils 26 - , nix-elixir 27 - }: 28 - let 29 - overlays = [ 30 - agnoster.overlay 31 - nix-elixir.overlay 32 - (import ./pkgs) 33 - ]; 34 - in 24 + outputs = { 25 + self, 26 + darwin, 27 + nixpkgs, 28 + home-manager, 29 + agnoster, 30 + flake-utils, 31 + nix-elixir, 32 + ... 33 + } @ inputs: let 34 + overlays = [ 35 + agnoster.overlay 36 + nix-elixir.overlay 37 + (import ./pkgs) 38 + ]; 39 + in 35 40 flake-utils.lib.eachDefaultSystem 36 - (system: 37 - let 38 - pkgs = import nixpkgs { inherit system overlays; }; 39 - in 40 - { 41 - formatter = pkgs.alejandra; 41 + (system: let 42 + pkgs = import nixpkgs {inherit system overlays;}; 43 + in { 44 + formatter = pkgs.alejandra; 42 45 43 - legacyPackages = pkgs; 46 + packages = { 47 + home = pkgs.writeScriptBin "activate-home" '' 48 + ${home-manager.packages.${system}.default}/bin/home-manager --flake "${self}" "$@" 49 + ''; 50 + 51 + system = let 52 + emptyConfiguration = darwin.lib.darwinSystem { 53 + inherit system; 54 + 55 + modules = []; 56 + }; 57 + builder = 58 + if pkgs.stdenv.isDarwin 59 + then "${emptyConfiguration.system}/sw/bin/darwin-rebuild" 60 + else pkgs.lib.getExe pkgs.nixos-rebuid; 61 + in pkgs.writeScriptBin "activate-system" '' 62 + ${builder} --flake "${self}#''$(hostname -s)" "$@" 63 + ''; 64 + }; 44 65 45 - devShells = (pkgs.callPackage ./dev_shells.nix { }) // { 46 - _sefault = pkgs.mkShell { 47 - nativeBuildInputs = [ 66 + devShells = 67 + (pkgs.callPackage ./dev_shells.nix {}) 68 + // { 69 + default = pkgs.mkShell { 70 + packages = [ 48 71 pkgs.fnlfmt 49 - pkgs.alejandra 50 72 # TODO: Remove it and manage all configuration from Nix 51 73 pkgs.stow 52 74 ]; 53 75 }; 54 76 }; 55 - }) 77 + }) 56 78 // { 57 - darwinConfigurations."NiunioBook" = darwin.lib.darwinSystem { 79 + lib = { 80 + readFileWithComments = path: let 81 + lib = nixpkgs.lib; 82 + content = lib.strings.fileContents path; 83 + notComment = line: !lib.strings.hasPrefix "#" line; 84 + in 85 + builtins.filter notComment (lib.strings.splitString "\n" content); 86 + }; 87 + 88 + # TODO: Automatically discover and build that 89 + darwinConfigurations."NiunioBook" = 90 + (import ./hosts/niuniobook.nix { 91 + inherit inputs overlays; 92 + }) 93 + .system; 94 + 95 + homeConfigurations."hauleth" = home-manager.lib.homeManagerConfiguration { 96 + pkgs = import nixpkgs { 58 97 system = "x86_64-darwin"; 98 + inherit overlays; 99 + }; 100 + 101 + extraSpecialArgs = { 102 + inherit inputs; 103 + }; 104 + 59 105 modules = [ 60 - { nixpkgs = { inherit overlays; }; } 61 - ./nix/nix.nix 62 - ./nix/system.nix 63 - ./nix/services.nix 64 - ./nix/fonts.nix 65 - ./nix/environment.nix 66 - ./nix/security.nix 67 - ./modules/nvim.nix 68 106 { 69 - system.stateVersion = 4; 70 - documentation.enable = true; 107 + home.username = "hauleth"; 108 + home.homeDirectory = "/Users/hauleth/"; 71 109 } 110 + ./modules/fish.nix 111 + ./modules/direnv.nix 112 + ./modules/git.nix 113 + ./modules/plan.nix 114 + ./modules/ctags.nix 115 + ./modules/curl.nix 116 + { home.stateVersion = "22.11"; } 72 117 ]; 73 - 74 - specialArgs = { 75 - inherit darwin nixpkgs; 76 - 77 - dotfiles = self; 78 - }; 79 118 }; 80 119 81 - # for convenience 82 - darwinPackages = self.darwinConfigurations."NiunioBook".pkgs; 83 120 84 121 templates = { 85 122 elixir = {
+2 -1
git/.config/git/config
··· 33 33 skip = update-index --skip-worktree 34 34 unskip = update-index --no-skip-worktree 35 35 default-branch = "!git symbolic-ref --short refs/remotes/origin/HEAD | sed 's|^origin/||'" 36 - cleanup = "!git branch --format=\"%(if:notequals=*)%(HEAD)%(then)%(if:notequals=${1:-$(git default-branch)})%(refname:lstrip=2)%(then)%(refname:lstrip=2)%(end)%(end)\" --merged $(git default-branch) | xargs -rpxL1 git branch -d" 36 + update = "!git rebase -i \"$(git merge-base HEAD \"$(git default-branch)\")\"" 37 + cleanup = "!git branch --format=\"%(if:notequals=*)%(HEAD)%(then)%(if:notequals=${1:-$(git default-branch)})%(refname:lstrip=2)%(then)%(refname:lstrip=2)%(end)%(end)\" --merged "$(git default-branch)" | xargs -rpxL1 git branch -d" 37 38 38 39 [pretty] 39 40 simple-oneline = "%C(yellow)%h%C(auto)%d %s [%C(green)%aN <%aE>%C(reset)] (%C(blue)%ar%C(reset))"
+34
hosts/niuniobook.nix
··· 1 + { inputs 2 + , overlays 3 + , ... 4 + }: { 5 + type = "darwin"; 6 + 7 + hostname = "NiunioBook"; 8 + 9 + system = inputs.darwin.lib.darwinSystem { 10 + system = "x86_64-darwin"; 11 + modules = [ 12 + { nixpkgs = { inherit overlays; }; } 13 + { 14 + # You should generally set this to the total number of logical cores in your system. 15 + # $ sysctl -n hw.ncpu 16 + nix.settings.max-jobs = 8; 17 + nix.settings.cores = 8; 18 + } 19 + ../modules/common.nix 20 + ../modules/darwin.nix 21 + ../modules/iosevka.nix 22 + ../nix/environment.nix 23 + ../modules/nvim.nix 24 + { 25 + system.stateVersion = 4; 26 + documentation.enable = true; 27 + } 28 + ]; 29 + 30 + inputs = { 31 + dotfiles = inputs.self; 32 + }; 33 + }; 34 + }
-810
kitty/.config/kitty/kitty.conf
··· 1 - # vim:fileencoding=utf-8:ft=conf:foldmethod=marker 2 - 3 - #: Fonts {{{ 4 - 5 - #: kitty has very powerful font management. You can configure 6 - #: individual font faces and even specify special fonts for particular 7 - #: characters. 8 - 9 - font_family Iosevka Term Medium 10 - bold_font Iosevka Term Bold 11 - italic_font Iosevka Term Medium Italic 12 - bold_italic_font Iosevka Term Bold Italic 13 - 14 - #: You can specify different fonts for the bold/italic/bold-italic 15 - #: variants. By default they are derived automatically, by the OSes 16 - #: font system. Setting them manually is useful for font families that 17 - #: have many weight variants like Book, Medium, Thick, etc. For 18 - #: example:: 19 - 20 - #: font_family Operator Mono Book 21 - #: bold_font Operator Mono Medium 22 - #: italic_font Operator Mono Book Italic 23 - #: bold_italic_font Operator Mono Medium Italic 24 - 25 - font_size 14.0 26 - 27 - #: Font size (in pts) 28 - 29 - adjust_line_height 100% 30 - # adjust_column_width 0 31 - 32 - #: Change the size of each character cell kitty renders. You can use 33 - #: either numbers, which are interpreted as pixels or percentages 34 - #: (number followed by %), which are interpreted as percentages of the 35 - #: unmodified values. You can use negative pixels or percentages less 36 - #: than 100% to reduce sizes (but this might cause rendering 37 - #: artifacts). 38 - 39 - # symbol_map U+E0A0-U+E0A2,U+E0B0-U+E0B3 PowerlineSymbols 40 - 41 - #: Map the specified unicode codepoints to a particular font. Useful 42 - #: if you need special rendering for some symbols, such as for 43 - #: Powerline. Avoids the need for patched fonts. Each unicode code 44 - #: point is specified in the form U+<code point in hexadecimal>. You 45 - #: can specify multiple code points, separated by commas and ranges 46 - #: separated by hyphens. symbol_map itself can be specified multiple 47 - #: times. Syntax is:: 48 - 49 - #: symbol_map codepoints Font Family Name 50 - 51 - # box_drawing_scale 0.001, 1, 1.5, 2 52 - 53 - #: Change the sizes of the lines used for the box drawing unicode 54 - #: characters These values are in pts. They will be scaled by the 55 - #: monitor DPI to arrive at a pixel value. There must be four values 56 - #: corresponding to thin, normal, thick, and very thick lines. 57 - 58 - #: }}} 59 - 60 - #: Cursor customization {{{ 61 - 62 - cursor #ffffff 63 - 64 - #: Default cursor color 65 - 66 - # cursor_shape block 67 - 68 - #: The cursor shape can be one of (block, beam, underline) 69 - 70 - # cursor_blink_interval 0.5 71 - # cursor_stop_blinking_after 15.0 72 - 73 - #: The interval (in seconds) at which to blink the cursor. Set to zero 74 - #: to disable blinking. Note that numbers smaller than repaint_delay 75 - #: will be limited to repaint_delay. Stop blinking cursor after the 76 - #: specified number of seconds of keyboard inactivity. Set to zero to 77 - #: never stop blinking. 78 - 79 - #: }}} 80 - 81 - #: Scrollback {{{ 82 - 83 - # scrollback_lines 2000 84 - 85 - #: Number of lines of history to keep in memory for scrolling back. 86 - #: Memory is allocated on demand. 87 - 88 - # scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER 89 - 90 - #: Program with which to view scrollback in a new window. The 91 - #: scrollback buffer is passed as STDIN to this program. If you change 92 - #: it, make sure the program you use can handle ANSI escape sequences 93 - #: for colors and text formatting. INPUT_LINE_NUMBER in the command 94 - #: line above will be replaced by an integer representing which line 95 - #: should be at the top of the screen. 96 - 97 - # wheel_scroll_multiplier 5.0 98 - 99 - #: Modify the amount scrolled by the mouse wheel or touchpad. Use 100 - #: negative numbers to change scroll direction. 101 - 102 - #: }}} 103 - 104 - #: Mouse {{{ 105 - 106 - # url_color #0087BD 107 - # url_style curly 108 - 109 - #: The color and style for highlighting URLs on mouse-over. url_style 110 - #: can be one of: none, single, double, curly 111 - 112 - # open_url_modifiers kitty_mod 113 - 114 - #: The modifier keys to press when clicking with the mouse on URLs to 115 - #: open the URL 116 - 117 - # open_url_with default 118 - 119 - #: The program with which to open URLs that are clicked on. The 120 - #: special value default means to use the operating system's default 121 - #: URL handler. 122 - 123 - # copy_on_select no 124 - 125 - #: Copy to clipboard on select. With this enabled, simply selecting 126 - #: text with the mouse will cause the text to be copied to clipboard. 127 - #: Useful on platforms such as macOS/Wayland that do not have the 128 - #: concept of primary selections. Note that this is a security risk, 129 - #: as all programs, including websites open in your browser can read 130 - #: the contents of the clipboard. 131 - 132 - # rectangle_select_modifiers ctrl+alt 133 - 134 - #: The modifiers to use rectangular selection (i.e. to select text in 135 - #: a rectangular block with the mouse) 136 - 137 - # select_by_word_characters :@-./_~?&=%+# 138 - 139 - #: Characters considered part of a word when double clicking. In 140 - #: addition to these characters any character that is marked as an 141 - #: alpha-numeric character in the unicode database will be matched. 142 - 143 - # click_interval 0.5 144 - 145 - #: The interval between successive clicks to detect double/triple 146 - #: clicks (in seconds) 147 - 148 - # mouse_hide_wait 3.0 149 - 150 - #: Hide mouse cursor after the specified number of seconds of the 151 - #: mouse not being used. Set to zero to disable mouse cursor hiding. 152 - 153 - # focus_follows_mouse no 154 - 155 - #: Set the active window to the window under the mouse when moving the 156 - #: mouse around 157 - 158 - #: }}} 159 - 160 - #: Performance tuning {{{ 161 - 162 - # repaint_delay 10 163 - 164 - #: Delay (in milliseconds) between screen updates. Decreasing it, 165 - #: increases frames-per-second (FPS) at the cost of more CPU usage. 166 - #: The default value yields ~100 FPS which is more than sufficient for 167 - #: most uses. Note that to actually achieve 100 FPS you have to either 168 - #: set sync_to_monitor to no or use a monitor with a high refresh 169 - #: rate. 170 - 171 - # input_delay 3 172 - 173 - #: Delay (in milliseconds) before input from the program running in 174 - #: the terminal is processed. Note that decreasing it will increase 175 - #: responsiveness, but also increase CPU usage and might cause flicker 176 - #: in full screen programs that redraw the entire screen on each loop, 177 - #: because kitty is so fast that partial screen updates will be drawn. 178 - 179 - sync_to_monitor no 180 - 181 - #: Sync screen updates to the refresh rate of the monitor. This 182 - #: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing) 183 - #: when scrolling. However, it limits the rendering speed to the 184 - #: refresh rate of your monitor. With a very high speed mouse/high 185 - #: keyboard repeat rate, you may notice some slight input latency. If 186 - #: so, set this to no. 187 - 188 - #: }}} 189 - 190 - #: Terminal bell {{{ 191 - 192 - enable_audio_bell false 193 - 194 - #: Enable/disable the audio bell. Useful in environments that require 195 - #: silence. 196 - 197 - visual_bell_duration 0.1 198 - 199 - #: Visual bell duration. Flash the screen when a bell occurs for the 200 - #: specified number of seconds. Set to zero to disable. 201 - 202 - # window_alert_on_bell yes 203 - 204 - #: Request window attention on bell. Makes the dock icon bounce on 205 - #: macOS or the taskbar flash on linux. 206 - 207 - # bell_on_tab yes 208 - 209 - #: Show a bell symbol on the tab if a bell occurs in one of the 210 - #: windows in the tab and the window is not the currently focused 211 - #: window 212 - 213 - #: }}} 214 - 215 - #: Window layout {{{ 216 - 217 - # remember_window_size yes 218 - # initial_window_width 640 219 - # initial_window_height 400 220 - 221 - #: If enabled, the window size will be remembered so that new 222 - #: instances of kitty will have the same size as the previous 223 - #: instance. If disabled, the window will initially have size 224 - #: configured by initial_window_width/height, in pixels. You can use a 225 - #: suffix of "c" on the width/height values to have them interpreted 226 - #: as number of cells instead of pixels. 227 - 228 - # enabled_layouts * 229 - 230 - #: The enabled window layouts. A comma separated list of layout names. 231 - #: The special value * means all layouts. The first listed layout will 232 - #: be used as the startup layout. For a list of available layouts, see 233 - #: the layouts. 234 - 235 - # window_resize_step_cells 2 236 - # window_resize_step_lines 2 237 - 238 - #: The step size (in units of cell width/cell height) to use when 239 - #: resizing windows. The cells value is used for horizontal resizing 240 - #: and the lines value for vertical resizing. 241 - 242 - # window_border_width 1.0 243 - 244 - #: The width (in pts) of window borders. Will be rounded to the 245 - #: nearest number of pixels based on screen resolution. Note that 246 - #: borders are displayed only when more than one window is visible. 247 - #: They are meant to separate multiple windows. 248 - 249 - # draw_minimal_borders yes 250 - 251 - #: Draw only the minimum borders needed. This means that only the 252 - #: minimum needed borders for inactive windows are drawn. That is only 253 - #: the borders that separate the inactive window from a neighbor. Note 254 - #: that setting a non-zero window margin overrides this and causes all 255 - #: borders to be drawn. 256 - 257 - # window_margin_width 10.0 258 - 259 - #: The window margin (in pts) (blank area outside the border) 260 - 261 - # single_window_margin_width -1000.0 262 - 263 - #: The window margin (in pts) to use when only a single window is 264 - #: visible. Negative values will cause the value of 265 - #: window_margin_width to be used instead. 266 - 267 - window_padding_width 30.0 268 - 269 - #: The window padding (in pts) (blank area between the text and the 270 - #: window border) 271 - 272 - # active_border_color #00ff00 273 - 274 - #: The color for the border of the active window 275 - 276 - # inactive_border_color #cccccc 277 - 278 - #: The color for the border of inactive windows 279 - 280 - # bell_border_color #ff5a00 281 - 282 - #: The color for the border of inactive windows in which a bell has 283 - #: occurred 284 - 285 - # inactive_text_alpha 1.0 286 - 287 - #: Fade the text in inactive windows by the specified amount (a number 288 - #: between zero and one, with zero being fully faded). 289 - 290 - #: }}} 291 - 292 - #: Tab bar {{{ 293 - 294 - # tab_bar_edge bottom 295 - 296 - #: Which edge to show the tab bar on, top or bottom 297 - 298 - tab_bar_margin_width 30.0 299 - 300 - #: The margin to the left and right of the tab bar (in pts) 301 - 302 - tab_bar_style fade 303 - 304 - #: The tab bar style, can be one of: fade or separator. In the fade 305 - #: style, each tab's edges fade into the background color, in the 306 - #: separator style, tabs are separated by a configurable separator. 307 - 308 - # tab_fade 0.25 0.5 0.75 1 309 - 310 - #: Control how each tab fades into the background when using fade for 311 - #: the tab_bar_style. Each number is an alpha (between zero and one) 312 - #: that controls how much the corresponding cell fades into the 313 - #: background, with zero being no fade and one being full fade. You 314 - #: can change the number of cells used by adding/removing entries to 315 - #: this list. 316 - 317 - # tab_separator " ┇ " 318 - 319 - #: The separator between tabs in the tab bar when using separator as 320 - #: the tab_bar_style. 321 - 322 - active_tab_foreground #2b3240 323 - active_tab_background #c1c9d4 324 - # active_tab_font_style bold-italic 325 - inactive_tab_foreground #4a5265 326 - inactive_tab_background #2b3240 327 - # inactive_tab_font_style normal 328 - 329 - #: Tab bar colors and styles 330 - 331 - #: }}} 332 - 333 - #: Color scheme {{{ 334 - 335 - foreground #c1c9d4 336 - background #2b3240 337 - 338 - #: The foreground and background colors 339 - 340 - # background_opacity 1 341 - # dynamic_background_opacity no 342 - 343 - #: The opacity of the background. A number between 0 and 1, where 1 is 344 - #: opaque and 0 is fully transparent. This will only work if 345 - #: supported by the OS (for instance, when using a compositor under 346 - #: X11). Note that it only sets the default background color's 347 - #: opacity. This is so that things like the status bar in vim, 348 - #: powerline prompts, etc. still look good. But it means that if you 349 - #: use a color theme with a background color in your editor, it will 350 - #: not be rendered as transparent. Instead you should change the 351 - #: default background color in your kitty config and not use a 352 - #: background color in the editor color scheme. Or use the escape 353 - #: codes to set the terminals default colors in a shell script to 354 - #: launch your editor. Be aware that using a value less than 1.0 is a 355 - #: (possibly significant) performance hit. If you want to dynamically 356 - #: change transparency of windows set dynamic_background_opacity to 357 - #: yes (this is off by default as it has a performance cost) 358 - 359 - # dim_opacity 0.75 360 - 361 - #: How much to dim text that has the DIM/FAINT attribute set. One 362 - #: means no dimming and zero means fully dimmed (i.e. invisible). 363 - 364 - selection_foreground #2b3240 365 - selection_background #8c98a7 366 - 367 - #: The foreground and background for text selected with the mouse 368 - 369 - 370 - #: The 16 terminal colors. There are 8 basic colors, each color has a 371 - #: dull and bright version. You can also set the remaining colors from 372 - #: the 256 color table as color16 to color255. 373 - 374 - color0 #2b3240 375 - color8 #4a5265 376 - 377 - #: black 378 - 379 - color1 #bc284f 380 - color9 #bc284f 381 - 382 - #: red 383 - 384 - color2 #88b4ad 385 - color10 #88b4ad 386 - 387 - #: green 388 - 389 - color3 #ffffff 390 - color11 #ffffff 391 - 392 - #: yellow 393 - 394 - color4 #5c8097 395 - color12 #5c8097 396 - 397 - #: blue 398 - 399 - color5 #4f426a 400 - color13 #4f426a 401 - 402 - #: magenta 403 - 404 - color6 #008097 405 - color14 #008097 406 - 407 - #: cyan 408 - 409 - color7 #8c98a7 410 - color15 #c1c9d4 411 - 412 - #: white 413 - 414 - #: }}} 415 - 416 - #: Advanced {{{ 417 - 418 - # shell . 419 - 420 - #: The shell program to execute. The default value of . means to use 421 - #: whatever shell is set as the default shell for the current user. 422 - #: Note that on macOS if you change this, you might need to add 423 - #: --login to ensure that the shell starts in interactive mode and 424 - #: reads its startup rc files. 425 - 426 - # editor . 427 - 428 - #: The console editor to use when editing the kitty config file or 429 - #: similar tasks. A value of . means to use the environment variable 430 - #: EDITOR. Note that this environment variable has to be set not just 431 - #: in your shell startup scripts but system-wide, otherwise kitty will 432 - #: not see it. 433 - 434 - # close_on_child_death no 435 - 436 - #: Close the window when the child process (shell) exits. If no (the 437 - #: default), the terminal will remain open when the child exits as 438 - #: long as there are still processes outputting to the terminal (for 439 - #: example disowned or backgrounded processes). If yes, the window 440 - #: will close as soon as the child process exits. Note that setting it 441 - #: to yes means that any background processes still using the terminal 442 - #: can fail silently because their stdout/stderr/stdin no longer work. 443 - 444 - allow_remote_control yes 445 - 446 - #: Allow other programs to control kitty. If you turn this on other 447 - #: programs can control all aspects of kitty, including sending text 448 - #: to kitty windows, opening new windows, closing windows, reading the 449 - #: content of windows, etc. Note that this even works over ssh 450 - #: connections. 451 - 452 - # startup_session none 453 - 454 - #: Path to a session file to use for all kitty instances. Can be 455 - #: overridden by using the kitty --session command line option for 456 - #: individual instances. See sessions in the kitty documentation for 457 - #: details. Note that relative paths are interpreted with respect to 458 - #: the kitty config directory. Environment variables in the path are 459 - #: expanded. 460 - 461 - # clipboard_control write-clipboard write-primary 462 - 463 - #: Allow programs running in kitty to read and write from the 464 - #: clipboard. You can control exactly which actions are allowed. The 465 - #: set of possible actions is: write-clipboard read-clipboard write- 466 - #: primary read-primary The default is to allow writing to the 467 - #: clipboard and primary selection. Note that enabling the read 468 - #: functionality is a security risk as it means that any program, even 469 - #: one running on a remote server via SSH can read your clipboard. 470 - 471 - term xterm-256color 472 - 473 - #: The value of the TERM environment variable to set. Changing this 474 - #: can break many terminal programs, only change it if you know what 475 - #: you are doing, not because you read some advice on Stack Overflow 476 - #: to change it. 477 - 478 - #: }}} 479 - 480 - #: OS specific tweaks {{{ 481 - 482 - macos_thicken_font 0.0 483 - 484 - macos_titlebar_color background 485 - 486 - #: Change the color of the kitty window's titlebar on macOS. A value 487 - #: of system means to use the default system color, a value of 488 - #: background means to use the background color of the currently 489 - #: active window and finally you can use an arbitrary color, such as 490 - #: #12af59 or red. WARNING: This option works by using a hack, as 491 - #: there is no proper Cocoa API for it. It sets the background color 492 - #: of the entire window and makes the titlebar transparent. As such it 493 - #: is incompatible with background_opacity. If you want to use both, 494 - #: you are probably better off just hiding the titlebar with 495 - #: macos_hide_titlebar. 496 - 497 - # macos_hide_titlebar yes 498 - 499 - #: Hide the kitty window's title bar on macOS. 500 - 501 - # x11_hide_window_decorations no 502 - 503 - #: Hide the window decorations (title bar and window borders) on X11 504 - #: and Wayland. Whether this works and exactly what effect it has 505 - #: depends on the window manager, as it is the job of the window 506 - #: manager/compositor to draw window decorations. 507 - 508 - # macos_option_as_alt no 509 - 510 - #: Use the option key as an alt key. With this set to no, kitty will 511 - #: use the macOS native Option+Key = unicode character behavior. This 512 - #: will break any Alt+key keyboard shortcuts in your terminal 513 - #: programs, but you can use the macOS unicode input technique. 514 - 515 - # macos_hide_from_tasks no 516 - 517 - #: Hide the kitty window from running tasks (Option+Tab) on macOS. 518 - 519 - # macos_quit_when_last_window_closed no 520 - 521 - #: Have kitty quit when all the top-level windows are closed. By 522 - #: default, kitty will stay running, even with no open windows, as is 523 - #: the expected behavior on macOS. 524 - 525 - # macos_window_resizable yes 526 - 527 - #: Disable this if you want kitty top-level (OS) windows to not be 528 - #: resizable on macOS. 529 - 530 - #: }}} 531 - 532 - #: Keyboard shortcuts {{{ 533 - 534 - #: For a list of key names, see: GLFW keys 535 - #: <http://www.glfw.org/docs/latest/group__keys.html>. The name to use 536 - #: is the part after the GLFW_KEY_ prefix. For a list of modifier 537 - #: names, see: GLFW mods 538 - #: <http://www.glfw.org/docs/latest/group__mods.html> 539 - 540 - #: On Linux you can also use XKB key names to bind keys that are not 541 - #: supported by GLFW. See XKB keys 542 - #: <https://github.com/xkbcommon/libxkbcommon/blob/master/xkbcommon/xkbcommon- 543 - #: keysyms.h> for a list of key names. The name to use is the part 544 - #: after the XKB_KEY_ prefix. Note that you should only use an XKB key 545 - #: name for keys that are not present in the list of GLFW keys. 546 - 547 - #: You can use the special action no_op to unmap a keyboard shortcut 548 - #: that is assigned in the default configuration. 549 - 550 - #: You can combine multiple actions to be triggered by a single 551 - #: shortcut, using the syntax below:: 552 - 553 - #: map key combine <separator> action1 <separator> action2 <separator> action3 ... 554 - 555 - #: For example:: 556 - 557 - #: map kitty_mod+e combine : new_window : next_layout 558 - 559 - #: this will create a new window and switch to the next available 560 - #: layout 561 - 562 - #: You can use multi-key shortcuts using the syntax shown below:: 563 - 564 - #: map key1>key2>key3 action 565 - 566 - #: For example:: 567 - 568 - #: map ctrl+f>2 set_font_size 20 569 - 570 - # kitty_mod ctrl+shift 571 - 572 - #: The value of kitty_mod is used as the modifier for all default 573 - #: shortcuts, you can change it in your kitty.conf to change the 574 - #: modifiers for all the default shortcuts. 575 - 576 - # clear_all_shortcuts no 577 - 578 - #: You can have kitty remove all shortcut definition seen up to this 579 - #: point. Useful, for instance, to remove the default shortcuts. 580 - 581 - #: Clipboard {{{ 582 - 583 - # map cmd+c copy_to_clipboard 584 - # map kitty_mod+c copy_to_clipboard 585 - # map cmd+v paste_from_clipboard 586 - # map kitty_mod+v paste_from_clipboard 587 - # map kitty_mod+s paste_from_selection 588 - # map shift+insert paste_from_selection 589 - # map kitty_mod+o pass_selection_to_program 590 - 591 - #: You can also pass the contents of the current selection to any 592 - #: program using pass_selection_to_program. By default, the system's 593 - #: open program is used, but you can specify your own, for example:: 594 - 595 - #: map kitty_mod+o pass_selection_to_program firefox 596 - 597 - #: You can pass the current selection to a terminal program running in 598 - #: a new kitty window, by using the @selection placeholder:: 599 - 600 - #: map kitty_mod+y new_window less @selection 601 - 602 - #: }}} 603 - 604 - #: Scrolling {{{ 605 - 606 - # map kitty_mod+up scroll_line_up 607 - # map kitty_mod+k scroll_line_up 608 - # map kitty_mod+down scroll_line_down 609 - # map kitty_mod+j scroll_line_down 610 - # map kitty_mod+page_up scroll_page_up 611 - # map kitty_mod+page_down scroll_page_down 612 - # map kitty_mod+home scroll_home 613 - # map kitty_mod+end scroll_end 614 - # map kitty_mod+h show_scrollback 615 - 616 - #: You can send the contents of the current screen + history buffer as 617 - #: stdin to an arbitrary program using the placeholders @text (which 618 - #: is the plain text) and @ansi (which includes text styling escape 619 - #: codes). For only the current screen, use @screen or @ansi_screen. 620 - #: For example, the following command opens the scrollback buffer in 621 - #: less in a new window:: 622 - 623 - #: map kitty_mod+y new_window @ansi less +G -R 624 - 625 - #: }}} 626 - 627 - #: Window management {{{ 628 - 629 - #: You can open a new window running an arbitrary program, for 630 - #: example:: 631 - 632 - #: map kitty_mod+y new_window mutt 633 - 634 - #: You can open a new window with the current working directory set to 635 - #: the working directory of the current window using:: 636 - 637 - #: map ctrl+alt+enter new_window_with_cwd 638 - 639 - # map cmd+n new_os_window 640 - # map kitty_mod+n new_os_window 641 - # map kitty_mod+w close_window 642 - # map kitty_mod+] next_window 643 - # map kitty_mod+[ previous_window 644 - # map kitty_mod+f move_window_forward 645 - # map kitty_mod+b move_window_backward 646 - # map kitty_mod+` move_window_to_top 647 - # map kitty_mod+r start_resizing_window 648 - # map kitty_mod+1 first_window 649 - # map kitty_mod+2 second_window 650 - # map kitty_mod+3 third_window 651 - # map kitty_mod+4 fourth_window 652 - # map kitty_mod+5 fifth_window 653 - # map kitty_mod+6 sixth_window 654 - # map kitty_mod+7 seventh_window 655 - # map kitty_mod+8 eighth_window 656 - # map kitty_mod+9 ninth_window 657 - # map kitty_mod+0 tenth_window 658 - #: }}} 659 - 660 - #: Tab management {{{ 661 - 662 - # map kitty_mod+right next_tab 663 - # map kitty_mod+left previous_tab 664 - # map kitty_mod+t new_tab 665 - # map kitty_mod+q close_tab 666 - # map kitty_mod+. move_tab_forward 667 - # map kitty_mod+, move_tab_backward 668 - # map kitty_mod+alt+t set_tab_title 669 - 670 - #: You can also create shortcuts to go to specific tabs, with 1 being 671 - #: the first tab:: 672 - 673 - #: map ctrl+alt+1 goto_tab 1 674 - #: map ctrl+alt+2 goto_tab 2 675 - 676 - #: Just as with new_window above, you can also pass the name of 677 - #: arbitrary commands to run when using new_tab and use 678 - #: new_tab_with_cwd. 679 - #: }}} 680 - 681 - #: Layout management {{{ 682 - 683 - # map kitty_mod+l next_layout 684 - 685 - #: You can also create shortcuts to switch to specific layouts:: 686 - 687 - #: map ctrl+alt+t goto_layout tall 688 - #: map ctrl+alt+s goto_layout stack 689 - #: }}} 690 - 691 - #: Font sizes {{{ 692 - 693 - #: You can change the font size for all top-level kitty windows at a 694 - #: time or only the current one. 695 - 696 - # map kitty_mod+equal change_font_size all +2.0 697 - # map kitty_mod+minus change_font_size all -2.0 698 - # map kitty_mod+backspace change_font_size all 0 699 - 700 - #: To setup shortcuts for specific font sizes:: 701 - 702 - #: map kitty_mod+f6 change_font_size all 10.0 703 - 704 - #: To setup shortcuts to change only the current window's font size:: 705 - 706 - #: map kitty_mod+f6 change_font_size current 10.0 707 - #: }}} 708 - 709 - #: Select and act on visible text {{{ 710 - 711 - #: Use the hints kitten to select text and either pass it to an 712 - #: external program or insert it into the terminal or copy it to the 713 - #: clipboard. 714 - 715 - # map kitty_mod+e kitten hints 716 - 717 - #: Open a currently visible URL using the keyboard. The program used 718 - #: to open the URL is specified in open_url_with. 719 - 720 - # map kitty_mod+p>f kitten hints --type path --program - 721 - 722 - #: Select a path/filename and insert it into the terminal. Useful, for 723 - #: instance to run git commands on a filename output from a previous 724 - #: git command. 725 - 726 - # map kitty_mod+p>shift+f kitten hints --type path 727 - 728 - #: Select a path/filename and open it with the default open program. 729 - 730 - # map kitty_mod+p>l kitten hints --type line --program - 731 - 732 - #: Select a line of text and insert it into the terminal. Use for the 733 - #: output of things like: ls -1 734 - 735 - # map kitty_mod+p>w kitten hints --type word --program - 736 - 737 - #: Select words and insert into terminal. 738 - 739 - # map kitty_mod+p>h kitten hints --type hash --program - 740 - 741 - #: Select something that looks like a hash and insert it into the 742 - #: terminal. Useful with git, which uses sha1 hashes to identify 743 - #: commits 744 - 745 - 746 - #: The hints kitten has many more modes of operation that you can map 747 - #: to different shortcuts. For a full description see kittens/hints. 748 - #: }}} 749 - 750 - #: Miscellaneous {{{ 751 - 752 - # map kitty_mod+f11 toggle_fullscreen 753 - # map kitty_mod+u input_unicode_character 754 - # map kitty_mod+f2 edit_config_file 755 - # map kitty_mod+escape kitty_shell window 756 - 757 - #: Open the kitty shell in a new window/tab/overlay/os_window to 758 - #: control kitty using commands. 759 - 760 - # map kitty_mod+a>m set_background_opacity +0.1 761 - # map kitty_mod+a>l set_background_opacity -0.1 762 - # map kitty_mod+a>1 set_background_opacity 1 763 - # map kitty_mod+a>d set_background_opacity default 764 - 765 - #: You can tell kitty to send arbitrary (UTF-8) encoded text to the 766 - #: client program when pressing specified shortcut keys. For example:: 767 - 768 - #: map ctrl+alt+a send_text all Special text 769 - 770 - #: This will send "Special text" when you press the ctrl+alt+a key 771 - #: combination. The text to be sent is a python string literal so you 772 - #: can use escapes like \x1b to send control codes or \u21fb to send 773 - #: unicode characters (or you can just input the unicode characters 774 - #: directly as UTF-8 text). The first argument to send_text is the 775 - #: keyboard modes in which to activate the shortcut. The possible 776 - #: values are normal or application or kitty or a comma separated 777 - #: combination of them. The special keyword all means all modes. The 778 - #: modes normal and application refer to the DECCKM cursor key mode 779 - #: for terminals, and kitty refers to the special kitty extended 780 - #: keyboard protocol. 781 - 782 - #: Another example, that outputs a word and then moves the cursor to 783 - #: the start of the line (same as pressing the Home key):: 784 - 785 - #: map ctrl+alt+a send_text normal Word\x1b[H 786 - #: map ctrl+alt+a send_text application Word\x1bOH 787 - 788 - #: }}} 789 - 790 - map alt+a send_text all \u0105 791 - map alt+c send_text all \u0107 792 - map alt+e send_text all \u0119 793 - map alt+l send_text all \u0142 794 - map alt+n send_text all \u0144 795 - map alt+o send_text all \u00F3 796 - map alt+s send_text all \u015B 797 - map alt+x send_text all \u017A 798 - map alt+z send_text all \u017C 799 - 800 - map alt+shift+a send_text all \u0104 801 - map alt+shift+c send_text all \u0106 802 - map alt+shift+e send_text all \u0118 803 - map alt+shift+l send_text all \u0141 804 - map alt+shift+n send_text all \u0143 805 - map alt+shift+o send_text all \u00d3 806 - map alt+shift+s send_text all \u015a 807 - map alt+shift+x send_text all \u0179 808 - map alt+shift+z send_text all \u017b 809 - 810 - # }}}
-3
misc/.curlrc
··· 1 - silent=true 2 - 3 - netrc-optional
+26
modules/common.nix
··· 1 + { pkgs, inputs, ... }: 2 + { 3 + nixpkgs.config.allowUnfree = true; 4 + 5 + nix.useDaemon = true; 6 + services.nix-daemon.enable = true; 7 + 8 + environment.systemPackages = [ 9 + pkgs.cachix 10 + ]; 11 + 12 + nix.registry = { 13 + nixpkgs.flake = inputs.nixpkgs; 14 + dotfiles.flake = inputs.dotfiles; 15 + } // pkgs.lib.optionals pkgs.stdenv.isDarwin { 16 + darwin.flake = inputs.darwin; 17 + }; 18 + 19 + nix.package = pkgs.nixFlakes; 20 + nix.extraOptions = '' 21 + keep-outputs = true 22 + keep-derivations = true 23 + 24 + experimental-features = nix-command flakes 25 + ''; 26 + }
+71
modules/ctags.nix
··· 1 + { config, lib, pkgs, ... }: 2 + let 3 + toArg = k: v: "--${k}=${v}"; 4 + listToArgs = k: vs: map (toArg k) vs; 5 + attrsetToArgs = attr: lib.strings.concatStringsSep "\n" (lib.lists.flatten (lib.attrsets.mapAttrsToList listToArgs attr)); 6 + in 7 + { 8 + options.programs.ctags = { 9 + enable = lib.mkEnableOption "ctags"; 10 + 11 + package = lib.mkOption { 12 + type = lib.types.package; 13 + default = pkgs.universal-ctags; 14 + defaultText = lib.literalExpression "pkgs.universal-ctags"; 15 + description = "The <literal>ctags</literal> package to use."; 16 + }; 17 + 18 + flags = lib.mkOption { 19 + type = lib.types.attrsOf lib.types.anything; 20 + default = { }; 21 + }; 22 + }; 23 + 24 + config = { 25 + programs.ctags = { 26 + enable = true; 27 + 28 + flags = { 29 + fields = [ 30 + "+l" 31 + "+n" 32 + "+z" 33 + "+Z" 34 + ]; 35 + 36 + exclude = [ 37 + "_build" 38 + "deps" 39 + ".elixir_ls" 40 + "mix.lock" 41 + 42 + ".pijul" 43 + "log" 44 + "tmp" 45 + ".direnv" 46 + 47 + ".projections.json" 48 + "coveralls.json" 49 + 50 + "node_modules" 51 + "project.json" 52 + "package-lock.json" 53 + "yarn.lock" 54 + 55 + "target" 56 + "Cargo.lock" 57 + 58 + "flake.lock" 59 + ]; 60 + }; 61 + }; 62 + 63 + home.packages = [ config.programs.ctags.package ]; 64 + 65 + xdg.configFile.ctags = { 66 + target = "ctags/config.ctags"; 67 + 68 + text = attrsetToArgs config.programs.ctags.flags; 69 + }; 70 + }; 71 + }
+16
modules/curl.nix
··· 1 + { pkgs, ... }: { 2 + home.packages = [ 3 + pkgs.curl 4 + pkgs.curlie 5 + ]; 6 + 7 + home.file.curlrc = { 8 + target = ".curlrc"; 9 + 10 + text = '' 11 + silent=true 12 + 13 + netrc-optional 14 + ''; 15 + }; 16 + }
+34
modules/darwin.nix
··· 1 + { pkgs, ... }: 2 + { 3 + nix.settings.extra-sandbox-paths = [ 4 + "/System/Library/Frameworks" 5 + "/System/Library/PrivateFrameworks" 6 + "/usr/lib" 7 + "/private/tmp" 8 + "/private/var/tmp" 9 + "/usr/bin/env" 10 + ]; 11 + 12 + nix.settings.allowed-users = ["@admin" "@builder" "hauleth"]; 13 + 14 + # Simulate the systemd-resolved .localhost resolution 15 + services.dnsmasq = { 16 + enable = true; 17 + port = 35353; 18 + addresses = { 19 + localhost = "127.0.0.1"; 20 + }; 21 + }; 22 + 23 + # Enable TouchID PAM on macOS 24 + security.pam.enableSudoTouchIdAuth = true; 25 + 26 + system = { 27 + defaults.dock.autohide = true; 28 + 29 + keyboard = { 30 + enableKeyMapping = true; 31 + remapCapsLockToControl = true; 32 + }; 33 + }; 34 + }
+23
modules/direnv.nix
··· 1 + { ... }: { 2 + programs.direnv = { 3 + enable = true; 4 + 5 + nix-direnv.enable = true; 6 + 7 + stdlib = '' 8 + layout_postgres() { 9 + export PGDATA="$(direnv_layout_dir)/postgres" 10 + export PGHOST="$PGDATA" 11 + 12 + if [[ ! -d "$PGDATA" ]]; then 13 + initdb -U postgres 14 + cat >> "$PGDATA/postgresql.conf" <<-EOF 15 + listen_addresses = ''' 16 + unix_socket_directories = '$PGHOST' 17 + EOF 18 + echo "CREATE DATABASE $USER;" | postgres --single -E postgres 19 + fi 20 + } 21 + ''; 22 + }; 23 + }
+70
modules/fish.nix
··· 1 + { config, pkgs, ... }: { 2 + programs.fish = { 3 + enable = true; 4 + 5 + plugins = [ 6 + { 7 + name = "agnoster"; 8 + src = pkgs.fetchFromGitHub { 9 + owner = "hauleth"; 10 + repo = "agnoster"; 11 + rev = "master"; 12 + sha256 = "0/FgJlQULIXKhQIt3z3ugAGubgMlwFZa/cjGjiq7BcA="; 13 + }; 14 + } 15 + ]; 16 + 17 + shellAliases = { 18 + git = "LC_CTYPE=UTF-8 LANG=C command git"; 19 + g = "git"; 20 + }; 21 + 22 + functions = { 23 + e = "$EDITOR $argv"; 24 + p = '' 25 + function p 26 + if test (count $argv) -gt 0 && test -f $argv[1] || not isatty 27 + bat $argv 28 + else 29 + ls -Alh $argv 30 + end 31 + end 32 + ''; 33 + ix = "curl --netrc-optional -F 'f:1=@-' ix.io | pbcopy"; 34 + }; 35 + 36 + loginShellInit = '' 37 + fish_add_path --move --path $HOME/.nix-profile/bin /run/wrappers/bin /etc/profiles/per-user/$USER/bin /nix/var/nix/profiles/default/bin /run/current-system/sw/bin 38 + ''; 39 + 40 + shellInit = '' 41 + set -gx XDG_RUNTIME_DIR (getconf DARWIN_USER_TEMP_DIR) 42 + set -gx MIX_XDG 1 43 + 44 + set -g fish_greeting 45 + 46 + function e --wraps nvim --description 'Run $EDITOR' 47 + $EDITOR $argv 48 + end 49 + 50 + ulimit -n 10480 51 + ''; 52 + 53 + interactiveShellInit = '' 54 + # use fish in nix run and nix-shell 55 + ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source 56 + 57 + set -g DEFAULT_USER ${config.home.username} 58 + 59 + set -gx SSH_AUTH_SOCK ~/.local/share/1password/auth.sock 60 + 61 + source (${pkgs.direnv}/bin/direnv hook fish | psub) 62 + source (${pkgs.lima}/bin/limactl completion fish | psub) 63 + source $HOME/.op/plugins.sh 64 + 65 + if which op > /dev/null; source (op completion fish | psub); end 66 + 67 + test -e $HOME/.iterm2_shell_integration.fish ; and source $HOME/.iterm2_shell_integration.fish 68 + ''; 69 + }; 70 + }
+136
modules/git.nix
··· 1 + { pkgs, inputs, ... }: { 2 + programs.gh = { 3 + enable = true; 4 + 5 + settings.aliases.co = "pr checkout"; 6 + }; 7 + 8 + home.packages = with pkgs; [ 9 + git-gone 10 + git-revise 11 + gitAndTools.git-imerge 12 + gitAndTools.git-test 13 + gitAndTools.tig 14 + ]; 15 + 16 + programs.git = { 17 + enable = true; 18 + 19 + diff-so-fancy.enable = true; 20 + lfs.enable = true; 21 + 22 + attributes = [ 23 + "*.ex diff=elixir" 24 + "*.exs diff=elixir" 25 + "mix.lock merge=binary" 26 + 27 + "*.erl diff=erlang" 28 + "*.hrl diff=erlang" 29 + "rebar.lock merge=binary" 30 + 31 + "*.tex diff=tex" 32 + 33 + "*.rs diff=rust" 34 + "Cargo.lock merge=binary" 35 + 36 + "*.css diff=css" 37 + 38 + "*.md diff=markdown" 39 + 40 + "flake.lock merge=binary" 41 + ]; 42 + 43 + ignores = inputs.self.lib.readFileWithComments ./git/ignore; 44 + 45 + aliases = { 46 + b = "branch"; 47 + ca = "commit --amend"; 48 + ci = "commit"; 49 + rci = "commit --amend --reuse-message HEAD"; 50 + 51 + lg = "log --color --graph --abbrev-commit --pretty=simple-oneline"; 52 + 53 + squash = "rebase --interactive --autosquash @{upstream}"; 54 + update = "!git rebase -i \"$(git merge-base HEAD \"$(git default-branch)\")\""; 55 + 56 + st = "status -sb"; 57 + todo = "grep -Ee '\\\\bTODO:?\\\\b'"; 58 + fixme = "grep -Ee '\\\\bFIX(ME)?:?\\\\b'"; 59 + 60 + default-branch = "!git symbolic-ref --short refs/remotes/origin/HEAD | sed 's|^origin/||'"; 61 + 62 + cleanup = "!git branch --format=\"%(if:notequals=*)%(HEAD)%(then)%(if:notequals=\${1:-$(git default-branch)})%(refname:lstrip=2)%(then)%(refname:lstrip=2)%(end)%(end)\" --merged \"\$(git default-branch)\" | xargs -rpxL1 git branch -d"; 63 + }; 64 + 65 + extraConfig = { 66 + core.commitGraph = true; 67 + 68 + init.defaultBranch = "master"; 69 + 70 + user.useConfigOnly = true; 71 + 72 + merge = { 73 + ff = false; 74 + conflictstyle = "diff3"; 75 + }; 76 + 77 + branch.autoSetupRebase = "always"; 78 + 79 + commit = { 80 + gpgSign = true; 81 + verbose = true; 82 + cleanup = "scissors"; 83 + }; 84 + 85 + diff = { 86 + indentHeuristic = true; 87 + algorithm = "histogram"; 88 + mnemonicPrefix = true; 89 + 90 + tool = "difftastic"; 91 + 92 + markdown.xfuncname = "^(#+\\s+.*)$"; 93 + }; 94 + 95 + difftool = { 96 + prompt = false; 97 + 98 + difftastic.cmd = "${pkgs.difftastic}/bin/difft \"$LOCAL\" \"$REMOTE\""; 99 + }; 100 + 101 + pager.difftool = true; 102 + 103 + fetch.prune = true; 104 + 105 + tag = { 106 + forceSignAnnotated = true; 107 + sort = "version:refname"; 108 + }; 109 + 110 + versionsort.suffix = [ "" "-rc" "-pre" ]; 111 + 112 + push = { 113 + default = "simple"; 114 + autoSetupRemote = true; 115 + followTags = true; 116 + gpgSign = "if-asked"; 117 + }; 118 + 119 + pull = { 120 + rebase = true; 121 + twohead = "ort"; 122 + }; 123 + 124 + rebase = { 125 + autostash = true; 126 + autosquash = true; 127 + updateRefs = true; 128 + }; 129 + 130 + pretty = { 131 + simple-oneline = "%C(yellow)%h%C(auto)%d %s [%C(green)%aN <%aE>%C(reset)] (%C(blue)%ar%C(reset))"; 132 + simple-oneline-sign = "%C(yellow)%h%C(auto)%d %s [%C(green)%aN <%aE>%C(reset)] (%C(blue)%ar%C(reset)) %G?"; 133 + }; 134 + }; 135 + }; 136 + }
+82
modules/git/ignore
··· 1 + # Compiled sources {{{ 2 + *.com 3 + *.class 4 + *.dll 5 + *.exe 6 + *.o 7 + *.so 8 + # }}} 9 + # Packages {{{ 10 + *.7z 11 + *.dmg 12 + *.gz 13 + *.iso 14 + *.jar 15 + *.rar 16 + *.tar 17 + *.xz 18 + *.zip 19 + # }}} 20 + # Logs and databases {{{ 21 + *.log 22 + *.sqlite 23 + # }}} 24 + # OS generated files {{{ 25 + .DS_Store 26 + .DS_Store? 27 + ._* 28 + .Trashes 29 + ehthumbs.db 30 + Thumbs.db 31 + # }}} 32 + # Codekits {{{ 33 + .sass-cache/ 34 + .codekit-config.json 35 + config.codekit 36 + # }}} 37 + # Configs {{{ 38 + .envrc 39 + .direnv 40 + .devenv 41 + # }}} 42 + # Editors {{{ 43 + # VIM 44 + Session.vim 45 + .*.swo 46 + .*.swp 47 + *~ 48 + 49 + # Idea 50 + .idea/ 51 + 52 + # Sublime 53 + *.sublime-project 54 + 55 + # Atom 56 + .tern-project 57 + # }}} 58 + # Temporary files {{{ 59 + tmp/ 60 + *.tmp 61 + # }}} 62 + # Other {{{ 63 + .rake_tasks 64 + .meteor/ 65 + tags 66 + tags.* 67 + .gdb_history 68 + perf.data* 69 + oprofile_data 70 + .tool-versions-e 71 + # }}} 72 + 73 + # Tooling {{{ 74 + .elixir_ls 75 + .vagrant/ 76 + # }}} 77 + 78 + # Stack {{{ 79 + .stack-work 80 + # }}} 81 + 82 + erl_crash.dump
+8 -9
modules/nvim.nix
··· 1 - { config 2 - , pkgs 3 - , ... 4 - }: 5 - let 1 + { 2 + config, 3 + pkgs, 4 + ... 5 + }: let 6 6 nvim = pkgs.neovim.override { 7 7 configure = { 8 8 # Add Fennel to Lua path and require basic implementation ··· 18 18 nvim-treesitter.withAllGrammars 19 19 ]; 20 20 21 - opt = [ ]; 21 + opt = []; 22 22 }; 23 23 }; 24 24 }; 25 - in 26 - { 25 + in { 27 26 environment.variables.EDITOR = "nvim"; 28 - environment.systemPackages = [ nvim ]; 27 + environment.systemPackages = [nvim]; 29 28 }
+22
modules/plan.nix
··· 1 + { pkgs, ... }: { 2 + launchd.agents.plan-sync = { 3 + enable = pkgs.stdenv.isDarwin; 4 + config = { 5 + Label = "plan-sync"; 6 + 7 + ProgramArguments = [ 8 + "${pkgs.curl}/bin/curl" 9 + "--netrc-optional" 10 + "-F" 11 + "plan=&lt;/Users/hauleth/.plan" 12 + "https://plan.cat/stdin" 13 + ]; 14 + 15 + WatchPaths = [ 16 + "/Users/hauleth/.plan" 17 + ]; 18 + 19 + StandardErrorPath = "/Users/hauleth/.local/state/launchd/logs/plan-sync.stderr"; 20 + }; 21 + }; 22 + }
+7 -79
nix/environment.nix
··· 1 - { config 2 - , pkgs 3 - , ... 1 + { 2 + config, 3 + pkgs, 4 + ... 4 5 }: { 5 6 # List packages installed in system profile. To search by name, run: 6 7 # $ nix search nixpkgs wget 7 - environment.systemPackages = with pkgs; let 8 - fswatch = pkgs.writeShellApplication { 9 - name = "fswatch"; 10 - 11 - runtimeInputs = [ pkgs.entr pkgs.ripgrep ]; 12 - 13 - text = '' 14 - rg -l -t "$1" "" | entr -p echo /_ 15 - ''; 16 - }; 17 - in 18 - [ 8 + environment.systemPackages = with pkgs; [ 19 9 # _1password 20 - alejandra 21 10 asciinema 22 11 bat 23 12 comby 24 13 coreutils 25 - curlie 26 - difftastic 27 - direnv 28 14 entr 29 15 findutils 30 - fishPlugins.agnoster 31 16 fswatch 32 17 fzy 33 - gh 34 - git 35 - git-gone 36 - git-lfs 37 - git-revise 38 - gitAndTools.diff-so-fancy 39 - gitAndTools.git-chglog 40 - gitAndTools.git-imerge 41 - gitAndTools.git-test 42 - gitAndTools.tig 43 - glab 44 - # git-riff 45 18 gnupg 46 - imagemagick 47 19 jq 48 20 lima 49 21 lnav 50 22 neovim-remote 51 - nix-direnv-flakes 52 23 noti 53 24 pinentry_mac 54 25 # qmk ··· 56 27 ripgrep 57 28 rnix-lsp 58 29 senpai 59 - universal-ctags 60 - # w3m 61 - # watchman 62 - weechat 63 30 ]; 64 31 65 - environment.shells = [ pkgs.fish pkgs.zsh ]; 32 + environment.shells = [pkgs.fish pkgs.zsh]; 66 33 67 34 environment.variables = { 68 - EDITOR = "nvim"; 69 35 LESS = "-SRFXi"; 70 36 ERL_FLAGS = "-kernel shell_history enabled"; 71 37 }; 72 38 73 39 programs.nix-index.enable = true; 74 - programs.zsh.enable = true; 75 - programs.fish = { 76 - enable = true; 77 - 78 - shellAliases = { 79 - git = "LC_CTYPE=UTF-8 LANG=C command git"; 80 - g = "git"; 81 - }; 82 - 83 - loginShellInit = '' 84 - fish_add_path --move --prepend --path $HOME/.nix-profile/bin /run/wrappers/bin /etc/profiles/per-user/$USER/bin /nix/var/nix/profiles/default/bin /run/current-system/sw/bin 85 - ''; 86 - 87 - shellInit = '' 88 - set -gx XDG_RUNTIME_DIR (getconf DARWIN_USER_TEMP_DIR) 89 - set -gx MIX_XDG 1 90 - 91 - function e --wraps nvim --description 'Run $EDITOR' 92 - eval $EDITOR $argv 93 - end 94 - 95 - ulimit -n 10480 96 - ''; 97 - 98 - interactiveShellInit = '' 99 - # use fish in nix run and nix-shell 100 - ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source 101 - 102 - set -gx SSH_AUTH_SOCK ~/.local/share/1password/auth.sock 103 - 104 - source (${pkgs.direnv}/bin/direnv hook fish | psub) 105 - source (${pkgs.lima}/bin/limactl completion fish | psub) 106 - source $HOME/.op/plugins.sh 107 - 108 - if which op > /dev/null; source (op completion fish | psub); end 109 - 110 - test -e $HOME/.iterm2_shell_integration.fish ; and source $HOME/.iterm2_shell_integration.fish 111 - ''; 112 - }; 40 + programs.fish.enable = true; 113 41 }
+1 -4
nix/fonts.nix modules/iosevka.nix
··· 1 - { 2 - pkgs, 3 - ... 4 - }: let 1 + {pkgs, ...}: let 5 2 variants = { 6 3 design = { 7 4 i = "hooky";
-41
nix/nix.nix
··· 1 - { pkgs, ... }@args: { 2 - nixpkgs.config.allowUnfree = true; 3 - 4 - nix.useDaemon = true; 5 - services.nix-daemon.enable = true; 6 - 7 - environment.systemPackages = [ 8 - pkgs.cachix 9 - ]; 10 - 11 - nix.registry = { 12 - nixpkgs.flake = args.nixpkgs; 13 - darwin.flake = args.darwin; 14 - # dotfiles.flake = args.dotfiles; 15 - }; 16 - 17 - # You should generally set this to the total number of logical cores in your system. 18 - # $ sysctl -n hw.ncpu 19 - nix.settings.max-jobs = 8; 20 - nix.settings.cores = 8; 21 - 22 - nix.package = pkgs.nixFlakes; 23 - nix.extraOptions = '' 24 - keep-outputs = true 25 - keep-derivations = true 26 - 27 - experimental-features = nix-command flakes 28 - ''; 29 - 30 - # nix.useSandbox = true; 31 - nix.settings.extra-sandbox-paths = [ 32 - "/System/Library/Frameworks" 33 - "/System/Library/PrivateFrameworks" 34 - "/usr/lib" 35 - "/private/tmp" 36 - "/private/var/tmp" 37 - "/usr/bin/env" 38 - ]; 39 - 40 - nix.settings.allowed-users = [ "@admin" "@builder" "hauleth" ]; 41 - }
-5
nix/security.nix
··· 1 - { config 2 - , ... 3 - }: { 4 - security.pam.enableSudoTouchIdAuth = true; 5 - }
-36
nix/services.nix
··· 1 - { 2 - # Auto upgrade nix package and the daemon service. 3 - # services.nix-daemon = { 4 - # enable = true; 5 - # }; 6 - 7 - services.dnsmasq = { 8 - enable = true; 9 - port = 35353; 10 - addresses = { 11 - localhost = "127.0.0.1"; 12 - }; 13 - }; 14 - 15 - # programs.gnupg.agent = { 16 - # enable = true; 17 - # enableSSHSupport = true; 18 - # }; 19 - 20 - # Automatically watch `~/.plan` and update https://plan.cat/~hauleth on change 21 - launchd.user.agents.plan-sync.serviceConfig = { 22 - ProgramArguments = [ 23 - "/usr/bin/curl" 24 - "--netrc-optional" 25 - "-F" 26 - "plan=&lt;/Users/hauleth/.plan" 27 - "https://plan.cat/stdin" 28 - ]; 29 - 30 - WatchPaths = [ 31 - "/Users/hauleth/.plan" 32 - ]; 33 - 34 - StandardErrorPath = "/Users/hauleth/.local/state/launchd/logs/plan-sync.stderr"; 35 - }; 36 - }
-10
nix/system.nix
··· 1 - { 2 - system = { 3 - defaults.dock.autohide = true; 4 - 5 - keyboard = { 6 - enableKeyMapping = true; 7 - remapCapsLockToControl = true; 8 - }; 9 - }; 10 - }
+27 -12
pkgs/default.nix
··· 1 1 final: prev: { 2 - beam = prev.beam // { 3 - defaultVersion = "erlangR25"; 2 + beam = 3 + prev.beam 4 + // { 5 + defaultVersion = "erlangR25"; 4 6 5 - packages = prev.beam.packages // { 6 - erlangR25 = prev.beam.packages.erlangR25.extend (efinal: eprev: { 7 - elixir = eprev.elixir_1_14; 8 - rebar3 = eprev.rebar3.overrideAttrs (_: { doCheck = false; }); 9 - }); 7 + packages = 8 + prev.beam.packages 9 + // { 10 + erlangR25 = prev.beam.packages.erlangR25.extend (efinal: eprev: { 11 + elixir = eprev.elixir_1_14; 12 + rebar3 = eprev.rebar3.overrideAttrs (_: { doCheck = false; }); 13 + }); 14 + }; 15 + 16 + packagesWith = erlang: 17 + (prev.beam.packagesWith erlang).extend (efinal: eprev: { 18 + livebook = eprev.livebook.override { elixir = efinal.elixir_1_14; }; 19 + }); 10 20 }; 11 21 12 - packagesWith = erlang: (prev.beam.packagesWith erlang).extend (efinal: eprev: { 13 - livebook = eprev.livebook.override { elixir = efinal.elixir_1_14; }; 14 - }); 22 + livebook = final.beam.packages.livebook; 23 + 24 + fswatch = prev.writeShellApplication { 25 + name = "fswatch"; 26 + 27 + runtimeInputs = [ final.entr final.ripgrep ]; 28 + 29 + text = '' 30 + rg -l -t "$1" "" | entr -p echo /_ 31 + ''; 15 32 }; 16 - 17 - livebook = final.beam.packages.livebook; 18 33 }
+1 -1
templates/elixir/flake.nix
··· 20 20 nativeBuildInputs = 21 21 [ 22 22 erl.elixir 23 - erl.elixir_ls 23 + erl.elixir-ls 24 24 ] 25 25 ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ 26 26 pkgs.darwin.apple_sdk.frameworks.CoreFoundation
-1
utils/dotfiles.nix
··· 1 - { darwin, self }: {}
+1 -1
vim/.config/nvim/fnl/picker.fnl
··· 14 14 :--glob=!.git]}] 15 15 (telescope.setup {:defaults (themes.get_dropdown opts)})) 16 16 17 - (telescope.load_extension :fzy_native) 17 + (telescope.load_extension :zf-native) 18 18 (. (require :telescope.builtin) name)) 19 19 20 20 (fn find-files [opts]
+1 -1
vim/.config/nvim/fnl/plugins.fnl
··· 27 27 ; File picker 28 28 (pkg :nvim-telescope/telescope.nvim { 29 29 :opt true 30 - :requires [(pkg :nvim-telescope/telescope-fzy-native.nvim) 30 + :requires [(pkg :natecraddock/telescope-zf-native.nvim) 31 31 (pkg :nvim-lua/plenary.nvim)]}) 32 32 33 33 ; Git
-68
wm/.chunkwmrc
··· 1 - #!/bin/bash 2 - 3 - if [ -r ~/.cache/wal/chunkwmcolors ]; then 4 - source ~/.cache/wal/chunkwmcolors 5 - fi 6 - 7 - NFOCUS=$(echo $FOCUS | sed 's/#//') 8 - NPRESE=$(echo $PRESE | sed 's/#//') 9 - 10 - # 11 - # NOTE: specify the absolutepath to the directory to use when 12 - # loading a plugin. '~' expansion is supported. 13 - # 14 - 15 - chunkc core::plugin_dir /usr/local/opt/chunkwm/share/chunkwm/plugins 16 - 17 - # 18 - # NOTE: if enabled, chunkwm will monitor the specified plugin_dir 19 - # and automatically reload any '.so' file that is changed. 20 - # 21 - 22 - chunkc core::hotload 1 23 - chunkc core::unload tiling.so 24 - chunkc core::unload ffm.so 25 - chunkc core::unload border.so 26 - 27 - # 28 - # NOTE: the following are config variables for the chunkwm-tiling plugin. 29 - # 30 - 31 - chunkc set global_desktop_mode bsp 32 - 33 - chunkc set global_desktop_offset_top 5 34 - chunkc set global_desktop_offset_bottom 5 35 - chunkc set global_desktop_offset_left 10 36 - chunkc set global_desktop_offset_right 10 37 - chunkc set global_desktop_offset_gap 5 38 - 39 - chunkc set bsp_optimal_ratio 1.618 40 - chunkc set bsp_split_mode optimal 41 - chunkc set bsp_split_ratio 0.5 42 - 43 - # chunkc set mouse_move_window shift 44 - # chunkc set mouse_resize_window shift 45 - # chunkc set mouse_motion_interval 35 46 - 47 - chunkc set monitor_focus_cycle 1 48 - chunkc set window_focus_cycle monitor 49 - 50 - chunkc set window_float_next 0 51 - chunkc set window_float_center 1 52 - chunkc set window_region_locked 1 53 - 54 - chunkc set focused_border_color "0xFFc1c9d4" 55 - chunkc set focused_border_width 5 56 - chunkc set focused_border_radius 0 57 - chunkc set focused_border_skip_floating 0 58 - 59 - chunkc tiling::rule --owner Dash --state sticky 60 - 61 - # 62 - # NOTE: specify plugins to load when chunkwm starts. 63 - # if chunkc plugin_dir is not set, the absolutepath is necessary. 64 - # 65 - 66 - chunkc core::load border.so 67 - chunkc core::load tiling.so 68 - chunkc core::load ffm.so
-43
wm/.skhdrc
··· 1 - # enter fullscreen mode for the focused container 2 - shift + alt + ctrl + cmd - f : chunkc tiling::window --toggle fullscreen 3 - 4 - # change focus between tiling / floating windows 5 - shift + alt + ctrl + cmd - space : chunkc tiling::window --toggle float 6 - 7 - # change layout of desktop 8 - shift + alt + ctrl + cmd - e : chunkc tiling::desktop --layout bsp 9 - shift + alt + ctrl + cmd - s : chunkc tiling::desktop --layout monocle 10 - 11 - # kill focused window 12 - shift + alt + ctrl + cmd - q : chunkc tiling::window --close 13 - 14 - # change focus 15 - ctrl + cmd - h : chunkc tiling::window --focus west 16 - ctrl + cmd - j : chunkc tiling::window --focus south 17 - ctrl + cmd - k : chunkc tiling::window --focus north 18 - ctrl + cmd - l : chunkc tiling::window --focus east 19 - 20 - ctrl + cmd - p : chunkc tiling::window --focus prev 21 - ctrl + cmd - n : chunkc tiling::window --focus next 22 - 23 - shift + alt + ctrl + cmd - p : chunkc tiling::window --focus prev 24 - shift + alt + ctrl + cmd - n : chunkc tiling::window --focus next 25 - 26 - # move focused window 27 - shift + alt + ctrl + cmd - h : chunkc tiling::window --swap west 28 - shift + alt + ctrl + cmd - j : chunkc tiling::window --swap south 29 - shift + alt + ctrl + cmd - k : chunkc tiling::window --swap north 30 - shift + alt + ctrl + cmd - l : chunkc tiling::window --swap east 31 - 32 - shift + alt + ctrl + cmd - r : chunkc tiling::desktop --rotate 90 33 - 34 - # move focused container to workspace 35 - shift + alt + ctrl + cmd - m : chunkc tiling::window --send-to-desktop $(chunkc get _last_active_desktop) 36 - shift + alt + ctrl + cmd - p : chunkc tiling::window --send-to-desktop prev 37 - shift + alt + ctrl + cmd - n : chunkc tiling::window --send-to-desktop next 38 - shift + alt + ctrl + cmd - 1 : chunkc tiling::window --send-to-desktop 1 39 - shift + alt + ctrl + cmd - 2 : chunkc tiling::window --send-to-desktop 2 40 - shift + alt + ctrl + cmd - 3 : chunkc tiling::window --send-to-desktop 3 41 - shift + alt + ctrl + cmd - 4 : chunkc tiling::window --send-to-desktop 4 42 - shift + alt + ctrl + cmd - 5 : chunkc tiling::window --send-to-desktop 5 43 - shift + alt + ctrl + cmd - 6 : chunkc tiling::window --send-to-desktop 6