diff --git a/flake.nix b/flake.nix index 09d4d6e..9856d7c 100644 --- a/flake.nix +++ b/flake.nix @@ -13,8 +13,7 @@ "x86_64-linux" ]; # Extend lib with lib.custom - # make sure to inherit this once we do lib extensions - #lib = nixpkgs.lib.extend (self: super: {custom = import ./lib {inherit (nixpkgs) lib;};}); + lib = nixpkgs.lib.extend (self: super: {custom = import ./lib {inherit (nixpkgs) lib;};}); in { # Overlays # overlays = import ./overlays {inherit inputs;}; diff --git a/hosts/common/core/default.nix b/hosts/common/core/default.nix new file mode 100644 index 0000000..63db315 --- /dev/null +++ b/hosts/common/core/default.nix @@ -0,0 +1,3 @@ +{lib, ...}: { + imports = lib.custom.scanPaths ./.; +} diff --git a/hosts/common/core/shell.nix b/hosts/common/core/shell.nix new file mode 100644 index 0000000..84c93d6 --- /dev/null +++ b/hosts/common/core/shell.nix @@ -0,0 +1,89 @@ +{ + config, + lib, + pkgs, + ... +}: { + config = lib.mkIf config.software.usershell.enable { + programs.zsh = { + enable = true; + autosuggestions = { + enable = true; + async = true; + }; + syntaxHighlighting = { + enable = true; + }; + shellAliases = { + lah = "ls -lah"; + set-nixpkgs-upstream = "git remote add upstream https://github.com/NixOS/nixpkgs.git"; + nup = "sudo nixos-rebuild switch --flake ."; + }; + }; + + programs.starship = let + raisin_black = "#262932"; + blood_red = "#710000"; + rich_lemon = "#FDF500"; + keppel = "#1AC5B0"; + electric_blue = "#36EBF3"; + blushing_purple = "#9370DB"; + frostbite = "#E455AE"; + steel_pink = "#CB1DCD"; + pale_silver = "#D1C5C0"; + in { + enable = true; + settings = { + format = "[ ](${rich_lemon})[ CrOS](bg:${rich_lemon} fg:${raisin_black})$username$hostname[ ](fg:${rich_lemon} bg:${blushing_purple})$directory[ ](fg:${blushing_purple} bg:${frostbite})$git_branch$git_status[ ](fg:${frostbite} bg:${steel_pink})$nix_shell[ ](${steel_pink})"; + right_format = "[ ](${rich_lemon})$time[ ](${rich_lemon})"; + + # Left Modules + username = { + disabled = false; + format = "[ $user]($style)"; + style_user = "fg:${keppel} bg:${rich_lemon}"; + style_root = "fg:${blood_red} bg:${rich_lemon}"; + }; + hostname = { + disabled = false; + format = "[@$hostname ]($style)"; + style = "fg:${keppel} bg:${rich_lemon}"; + ssh_only = false; + ssh_symbol = ""; + }; + directory = { + disabled = false; + format = "[ $path ]($style)"; + style = "bg:${blushing_purple} fg:${raisin_black}"; + truncation_length = 3; + truncation_symbol = "…/"; + }; + git_branch = { + disabled = false; + format = "[ $symbol $branch ]($style)"; + symbol = ""; + style = "fg:${raisin_black} bg:${frostbite}"; + }; + git_status = { + disabled = false; + format = "[$all_status$ahead_behind]($style)"; + style = "fg:${raisin_black} bg:${frostbite}"; + }; + nix_shell = { + disabled = false; + format = "[$symbol $name]($style)"; + style = "bg:${steel_pink} fg:${electric_blue}"; + symbol = ""; + }; + + # Right Modules + time = { + disabled = false; + format = "[$time]($style)"; + style = "fg:${raisin_black} bg:${rich_lemon}"; + }; + }; + }; + users.defaultUserShell = pkgs.zsh; + }; +} diff --git a/hosts/common/optional/keyd.nix b/hosts/common/optional/keyd.nix new file mode 100644 index 0000000..3f04b89 --- /dev/null +++ b/hosts/common/optional/keyd.nix @@ -0,0 +1,31 @@ +{ + services.keyd = { + enable = true; + keyboards.default = { + ids = ["*"]; + settings = { + main = { + capslock = "layer(standardL2)"; + }; + standardL2 = { + w = "up"; + s = "down"; + a = "left"; + d = "right"; + + b = "C-b"; + + space = "playpause"; + "." = "nextsong"; + "," = "previoussong"; + + "[" = "delete"; + "]" = "end"; + escape = "~"; + + home = "end"; + }; + }; + }; + }; +} diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..12a385e --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,18 @@ +# FIXME(lib.custom): Add some stuff from hmajid2301/dotfiles/lib/module/default.nix, as simplifies option declaration +{lib, ...}: { + # use path relative to the root of the project + relativeToRoot = lib.path.append ../.; + scanPaths = path: + builtins.map (f: (path + "/${f}")) ( + builtins.attrNames ( + lib.attrsets.filterAttrs ( + path: _type: + (_type == "directory") # include directories + || ( + (path != "default.nix") # ignore default.nix + && (lib.strings.hasSuffix ".nix" path) # include .nix files + ) + ) (builtins.readDir path) + ) + ); +}