diff --git a/colors.nix b/colors.nix index 84cca5d..855b246 100644 --- a/colors.nix +++ b/colors.nix @@ -97,7 +97,7 @@ let inherit (builtins) mapAttrs map; in rec { }; orange = { - normal = "ff5e69"; + normal = "ff8c26"; bright = "fca151"; pastel = ""; }; diff --git a/configuration.nix b/configuration.nix new file mode 120000 index 0000000..d34dc21 --- /dev/null +++ b/configuration.nix @@ -0,0 +1 @@ +/etc/nixos/machines/thor/configuration.nix \ No newline at end of file diff --git a/machines/loki/configuration.nix b/machines/loki/configuration.nix index c7b91bb..278c004 100644 --- a/machines/loki/configuration.nix +++ b/machines/loki/configuration.nix @@ -8,7 +8,7 @@ riley = { gui = true; - ide = true; + kak.ide = true; }; networking = { diff --git a/machines/thor/configuration.nix b/machines/thor/configuration.nix index b843b96..9032b31 100644 --- a/machines/thor/configuration.nix +++ b/machines/thor/configuration.nix @@ -7,8 +7,8 @@ ]; riley = { - ide = true; gui = true; + kak.ide = true; }; networking = { @@ -16,6 +16,10 @@ interfaces.enp9s0.useDHCP = true; }; + users.users."riley".packages = with pkgs; [ + minecraft + ]; + devices = { # Audio devices diff --git a/modules/default.nix b/modules/default.nix index 30551d3..10478b7 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -38,24 +38,6 @@ let named = submodule { options.riley = with lib; { - ide = mkOption { - type = types.bool; - description = '' - Enable IDE-like plugins such as language servers for Rust, Haskell and - Nix in the editor, and configure accordingly. If disabled, the editor - will lack some features such as semantic highlighting. - ''; - default = true; - }; - - gui = mkOption { - type = types.bool; - description = '' - Enable the display server and related graphical programs. - ''; - default = true; - }; - theme = mkOption { type = themeType; description = '' @@ -124,7 +106,7 @@ let named = submodule { - ./ide + ./kak ./gui ./fonts.nix @@ -137,6 +119,8 @@ let named = submodule { riley.theme = (import ../colors.nix)."dark"; + time.timeZone = "Europe/Amsterdam"; + environment.systemPackages = with pkgs; [ # Web utils diff --git a/modules/gui/alacritty.nix b/modules/gui/alacritty.nix index 4e92456..efd6abd 100644 --- a/modules/gui/alacritty.nix +++ b/modules/gui/alacritty.nix @@ -1,6 +1,6 @@ { pkgs, lib, config, ... }: -(lib.mkIf (config.riley.gui) { +with lib; (mkIf config.riley.gui { home-manager.users."riley" = { programs.alacritty = { enable = true; diff --git a/modules/gui/default.nix b/modules/gui/default.nix index 0f2c18a..3ff575e 100644 --- a/modules/gui/default.nix +++ b/modules/gui/default.nix @@ -1,20 +1,26 @@ { pkgs, config, lib, ... }: -({ +with lib; { imports = [ - ./window-manager.nix + + ./wm + ./pulseaudio.nix ./clipboard.nix ./alacritty.nix - ]; - -}) // (lib.mkIf (config.riley.gui) { - # Graphical applications - users.users."riley".packages = with pkgs; [ - google-chrome - tdesktop ]; + + options.riley.gui = mkEnableOption "gui applications and window manager"; -}) + config = mkIf config.riley.gui { + + # Graphical applications + users.users."riley".packages = with pkgs; [ + google-chrome + tdesktop + ]; + + }; +} diff --git a/modules/gui/window-manager.nix b/modules/gui/wm/default.nix similarity index 97% rename from modules/gui/window-manager.nix rename to modules/gui/wm/default.nix index 76cfffd..f631c20 100644 --- a/modules/gui/window-manager.nix +++ b/modules/gui/wm/default.nix @@ -27,7 +27,10 @@ let theme = config.riley.theme.hex; }; }); -in (lib.mkIf (config.riley.gui) { +in + +with lib; (mkIf config.riley.gui { + services.xserver = { enable = true; windowManager.i3.enable = true; diff --git a/modules/gui/keybinds.nix b/modules/gui/wm/keybinds.nix similarity index 97% rename from modules/gui/keybinds.nix rename to modules/gui/wm/keybinds.nix index 9b0601a..e41c0a7 100644 --- a/modules/gui/keybinds.nix +++ b/modules/gui/wm/keybinds.nix @@ -62,6 +62,9 @@ with lib; let mod = modifier; "${mod}+A" = "split v"; "${mod}+S" = "split h"; + "${mod}+Q" = "layout tabbed"; + "${mod}+W" = "layout default"; + "${mod}+F" = "fullscreen toggle"; "${mod}+BackSpace" = "kill"; diff --git a/modules/ide/README.md b/modules/kak/README.md similarity index 100% rename from modules/ide/README.md rename to modules/kak/README.md diff --git a/modules/ide/colors/common.nix b/modules/kak/colors/common.nix similarity index 100% rename from modules/ide/colors/common.nix rename to modules/kak/colors/common.nix diff --git a/modules/ide/colors/default.nix b/modules/kak/colors/default.nix similarity index 100% rename from modules/ide/colors/default.nix rename to modules/kak/colors/default.nix diff --git a/modules/ide/colors/haskell.nix b/modules/kak/colors/haskell.nix similarity index 100% rename from modules/ide/colors/haskell.nix rename to modules/kak/colors/haskell.nix diff --git a/modules/ide/colors/nix.nix b/modules/kak/colors/nix.nix similarity index 100% rename from modules/ide/colors/nix.nix rename to modules/kak/colors/nix.nix diff --git a/modules/ide/colors/rust.nix b/modules/kak/colors/rust.nix similarity index 95% rename from modules/ide/colors/rust.nix rename to modules/kak/colors/rust.nix index ab6ebc4..6bec1dd 100644 --- a/modules/ide/colors/rust.nix +++ b/modules/kak/colors/rust.nix @@ -22,7 +22,7 @@ face global macro rgb:fc4cbf+b # Keywords - face global keyword rgb:${blue.normal} + face global keyword rgb:${foreground.normal}+b # Literals face global literal rgb:${yellow.bright} diff --git a/modules/ide/default.nix b/modules/kak/default.nix similarity index 75% rename from modules/ide/default.nix rename to modules/kak/default.nix index 357aa8f..67f1849 100644 --- a/modules/ide/default.nix +++ b/modules/kak/default.nix @@ -17,6 +17,10 @@ let kakrc = pkgs.writeTextFile (rec { map global insert :buffer-next map global normal :buffer-next + def new-tab %{ prompt -file-completion '>' 'terminal kak -c %val{session} %val{text}' } + + map global normal ': new-tab' + colorscheme common face global LineNumbers rgb:${background.slight} @@ -29,7 +33,7 @@ let kakrc = pkgs.writeTextFile (rec { face global comment rgb:${foreground.slight} - '' + (lib.optionalString (config.riley.ide) '' + '' + (lib.optionalString (config.riley.kak.ide) '' eval %sh{ kak-lsp --kakoune -s $kak_session } @@ -45,7 +49,7 @@ let kakrc = pkgs.writeTextFile (rec { # Self-destruct this hook (it should only run once) remove-hooks global yeet - + } # Load language-specific color schemes @@ -68,6 +72,15 @@ let kakrc = pkgs.writeTextFile (rec { colorscheme rust + git show-diff + + hook buffer BufReload .* %{ + git update-diff + } + + hook buffer NormalIdle .* %{ git update-diff } + hook buffer InsertIdle .* %{ git update-diff } + hook window -group semtok BufReload .* lsp-semantic-tokens hook window -group semtok NormalIdle .* lsp-semantic-tokens hook window -group semtok InsertIdle .* lsp-semantic-tokens @@ -174,40 +187,51 @@ let kakrc = pkgs.writeTextFile (rec { }) } ''; }); - -in { - environment.systemPackages = with pkgs; [ - (pkgs.kakoune.override { - plugins = with kakounePlugins; [ +in with lib; { - # Custom config - kakrc + options.riley = { + kak.enable = (mkEnableOption "kakoune editor") // { default = true; }; + kak.ide = mkEnableOption "kakoune with ide plugins"; + }; - # Kakoune language server support - (symlinkJoin { - paths = [ - - # The language server client - kak-lsp + config = mkIf (config.riley.kak.enable || config.riley.kak.ide) { - # Include default language servers - rnix-lsp - haskell-language-server + environment.systemPackages = with pkgs; [ + (pkgs.kakoune.override { + plugins = [ - # Overwrite kak-lsp.toml - kak-lsp-config + # Custom config + kakrc + + ] ++ (lib.optionals config.riley.kak.ide [ - ]; - name = "kak-lsp-${kak-lsp.version}"; - nativeBuildInputs = [ makeWrapper ]; - postBuild = '' - wrapProgram $out/bin/kak-lsp --add-flags "--config $out/share/kak-lsp/kak-lsp.toml" - ''; - }) + # Kakoune language server support + (symlinkJoin { + paths = with kakounePlugins; [ + + # The language server client + kak-lsp + + # Include default language servers + rnix-lsp + haskell-language-server + + # Overwrite kak-lsp.toml + kak-lsp-config + + ]; + name = "kak-lsp-${kak-lsp.version}"; + nativeBuildInputs = [ makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/kak-lsp --add-flags "--config $out/share/kak-lsp/kak-lsp.toml" + ''; + }) + + ]) ++ colors; + }) + ]; + + }; - ] ++ colors; - }) - - ]; }