diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2024-09-17 10:12:18 +0530 |
|---|---|---|
| committer | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2024-09-17 10:12:18 +0530 |
| commit | cbd5b66b89fba2ad23a9da7372cf916305efad1f (patch) | |
| tree | 0a5580244e3fe87b05c581681e558925d0635ad7 | |
| download | home-manager-config-cbd5b66b89fba2ad23a9da7372cf916305efad1f.tar.gz home-manager-config-cbd5b66b89fba2ad23a9da7372cf916305efad1f.zip | |
Initial commit.
38 files changed, 987 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.gitignore diff --git a/README.md b/README.md new file mode 100644 index 0000000..4b7c359 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# home-manager-config +My personal home manager configurations. + +## Packages +| Name | Description | +|-----------|----------------------------| +| git | version control system | +| neovim | Text editor | +| alacritty | Terminal emulator | +| sxhkd | X hotkey daemon | +| bspwm | Widnow manager | +| polybar | Status bar | +| zsh | Shell | +| lf | Terminal file manager | +| rofi | Application launcher | +| nerdfonts | Font with glphs | diff --git a/alacritty/default.nix b/alacritty/default.nix new file mode 100644 index 0000000..b4dd846 --- /dev/null +++ b/alacritty/default.nix @@ -0,0 +1,77 @@ +{ pkgs, config, ... }: + +{ + programs.alacritty = { + enable = true; + + settings = { + window = { + opacity = 1.0; + padding = { + x = 4; + y = 0; + }; + decorations = "full"; + }; + + font = { + normal = { + family = "Fira Code Nerd Font"; + style = "Retina"; + }; + bold = { + family = "Fira Code Nerd Font"; + style = "Bold"; + }; + italic = { + family = "Fira Code Nerd Font"; + }; + size = 16.0; + }; + + colors = with config.lib.stylix.colors; { + primary = { + background = "0x${base00}"; + foreground = "0x${base05}"; + }; + + normal = { + black = "0x${base00}"; + red = "0x${base08}"; + green = "0x${base0B}"; + yellow = "0x${base0A}"; + blue = "0x${base0D}"; + magenta = "0x${base0E}"; + cyan = "0x${base0C}"; + white = "0x${base05}"; + }; + + bright = { + black = "0x${base03}"; + red = "0x${base08}"; + green = "0x${base0B}"; + yellow = "0x${base0A}"; + blue = "0x${base0D}"; + magenta = "0x${base0E}"; + cyan = "0x${base0C}"; + white = "0x${base07}"; + }; + + dim = { + black = "0x${base01}"; + red = "0x${base08}"; + green = "0x${base0B}"; + yellow = "0x${base0A}"; + blue = "0x${base0D}"; + magenta = "0x${base0E}"; + cyan = "0x${base0C}"; + white = "0x${base04}"; + }; + }; + + shell = { + program = "${pkgs.zsh}/bin/zsh"; + }; + }; + }; +} diff --git a/bash/default.nix b/bash/default.nix new file mode 100644 index 0000000..c0c17c7 --- /dev/null +++ b/bash/default.nix @@ -0,0 +1,6 @@ +{ ... }: + +{ + programs.bash.enable = true; + programs.bash.historyFile = "$HOME/.cache/bash/history"; +} diff --git a/bspwm/bspwmrc b/bspwm/bspwmrc new file mode 100644 index 0000000..b163ad2 --- /dev/null +++ b/bspwm/bspwmrc @@ -0,0 +1,5 @@ +for monitor in $(xrandr -q | grep -w 'connected' | cut -d' ' -f1); do + bspc monitor "$monitor" -d '1' '2' '3' '4' '5' '6' +done + +bspc rule -a "File Explorer" state=floating sticky diff --git a/bspwm/default.nix b/bspwm/default.nix new file mode 100644 index 0000000..a45b1e8 --- /dev/null +++ b/bspwm/default.nix @@ -0,0 +1,22 @@ +{ ... }: + +{ + xsession.windowManager.bspwm = { + enable = true; + settings = { + window_gap = 5; + split_ratio = 0.51; + single_monocle = true; + borderless_monocle = false; + gapless_monocle = false; + focus_follows_pointer = true; + pointer_follows_focus = false; + pointer_motion_interval = 5; + pointer_modifier = "mod4"; + pointer_action1 = "move"; + pointer_action2 = "resize_side"; + pointer_action3 = "resize_corner"; + }; + extraConfig = builtins.readFile ./bspwmrc; + }; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..802e0b5 --- /dev/null +++ b/flake.lock @@ -0,0 +1,315 @@ +{ + "nodes": { + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1708890466, + "narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "665b3c6748534eb766c777298721cece9453fdae", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1622559957, + "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "type": "github" + } + }, + "base16-foot": { + "flake": false, + "locked": { + "lastModified": 1696725948, + "narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=", + "owner": "tinted-theming", + "repo": "base16-foot", + "rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-foot", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1720809814, + "narHash": "sha256-numb3xigRGnr/deF7wdjBwVg7fpbTH7reFDkJ75AJkY=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "34f41987bec14c0f3f6b2155c19787b1f6489625", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-kitty": { + "flake": false, + "locked": { + "lastModified": 1665001328, + "narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=", + "owner": "kdrag0n", + "repo": "base16-kitty", + "rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805", + "type": "github" + }, + "original": { + "owner": "kdrag0n", + "repo": "base16-kitty", + "type": "github" + } + }, + "base16-tmux": { + "flake": false, + "locked": { + "lastModified": 1696725902, + "narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=", + "owner": "tinted-theming", + "repo": "base16-tmux", + "rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-tmux", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1716150083, + "narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": [ + "stylix", + "systems" + ] + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1689549921, + "narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "lastModified": 1713702291, + "narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "46.1", + "repo": "gnome-shell", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1726357542, + "narHash": "sha256-p4OrJL2weh0TRtaeu1fmNYP6+TOp/W2qdaIJxxQay4c=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "e524c57b1fa55d6ca9d8354c6ce1e538d2a1f47f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1724435763, + "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1726243404, + "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1725194671, + "narHash": "sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w+ROpMfuw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b833ff01a0d694b910daca6e2ff4a3f26dee478c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "stylix": "stylix" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-foot": "base16-foot", + "base16-helix": "base16-helix", + "base16-kitty": "base16-kitty", + "base16-tmux": "base16-tmux", + "base16-vim": "base16-vim", + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "gnome-shell": "gnome-shell", + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_2", + "systems": "systems" + }, + "locked": { + "lastModified": 1726170940, + "narHash": "sha256-sobkRkGBaMX9pD0bwU1iVPWi0WtQvZqlHyl1YtvNDio=", + "owner": "danth", + "repo": "stylix", + "rev": "35233f929629c8eb64e939e35260fc8347f94df9", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..7824c4b --- /dev/null +++ b/flake.nix @@ -0,0 +1,26 @@ +{ + description = "Home Manager configuration of arpit"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + stylix.url = "github:danth/stylix"; + }; + + outputs = { nixpkgs, home-manager, stylix, ... }: + let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + homeConfigurations."arpit" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ + ./home.nix + stylix.homeManagerModules.stylix + ]; + }; + }; +} diff --git a/git/default.nix b/git/default.nix new file mode 100644 index 0000000..32e74d4 --- /dev/null +++ b/git/default.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + programs.git = { + enable = true; + userEmail = "54011232+arpitchakladar@users.noreply.github.com"; + userName = "Arpit Chakladar"; + extraConfig.credential.helper = "store --file ~/.cache/git/credential"; + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..091054a --- /dev/null +++ b/home.nix @@ -0,0 +1,50 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./stylix/default.nix + ./bspwm/default.nix + ./sxhkd/default.nix + ./polybar/default.nix + ./git/default.nix + ./xresources/default.nix + ./zsh/default.nix + ./bash/default.nix + ./alacritty/default.nix + ./nvim/default.nix + ./lf/default.nix + ./rofi/default.nix + ]; + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = "arpit"; + home.homeDirectory = "/home/arpit"; + + # This value determines the Home Manager release that your configuration is + # compatible with. This helps avoid breakage when a new Home Manager release + # introduces backwards incompatible changes. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + home.stateVersion = "23.11"; # Please read the comment before changing. + + home.packages = with pkgs; [ + git + neovim + alacritty + sxhkd + bspwm + polybar + zsh + lf + rofi + (nerdfonts.override { fonts = [ "FiraCode" ]; }) + ]; + + home.sessionVariables = { + EDITOR = "nvim"; + }; + + programs.home-manager.enable = true; +} diff --git a/lf/default.nix b/lf/default.nix new file mode 100644 index 0000000..74c5fd4 --- /dev/null +++ b/lf/default.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + programs.lf = { + enable = true; + settings = { + hidden = true; + }; + }; +} diff --git a/nvim/colorscheme.nix b/nvim/colorscheme.nix new file mode 100644 index 0000000..d053324 --- /dev/null +++ b/nvim/colorscheme.nix @@ -0,0 +1,43 @@ +# Using the stylix to have a consistent colorscheme +config: + +with config.lib.stylix.colors.withHashtag; +'' +-- Apply the color scheme +vim.cmd("highlight clear") +vim.cmd("syntax reset") + +-- Set terminal colors +vim.g.terminal_color_0 = "${base00}" +vim.g.terminal_color_1 = "${base08}" +vim.g.terminal_color_2 = "${base0B}" +vim.g.terminal_color_3 = "${base0A}" +vim.g.terminal_color_4 = "${base0D}" +vim.g.terminal_color_5 = "${base0E}" +vim.g.terminal_color_6 = "${base0C}" +vim.g.terminal_color_7 = "${base05}" +vim.g.terminal_color_8 = "${base03}" +vim.g.terminal_color_9 = "${base08}" +vim.g.terminal_color_10 = "${base0B}" +vim.g.terminal_color_11 = "${base0A}" +vim.g.terminal_color_12 = "${base0D}" +vim.g.terminal_color_13 = "${base0E}" +vim.g.terminal_color_14 = "${base0C}" +vim.g.terminal_color_15 = "${base07}" + +-- Set highlight groups +vim.api.nvim_set_hl(0, "Normal", { fg = "${base05}", bg = "${base00}" }) +vim.api.nvim_set_hl(0, "Comment", { fg = "${base03}", bg = "${base00}", italic = true }) +vim.api.nvim_set_hl(0, "Constant", { fg = "${base09}" }) +vim.api.nvim_set_hl(0, "String", { fg = "${base0B}" }) +vim.api.nvim_set_hl(0, "Identifier", { fg = "${base08}" }) +vim.api.nvim_set_hl(0, "Function", { fg = "${base0D}" }) +vim.api.nvim_set_hl(0, "Statement", { fg = "${base0E}" }) +vim.api.nvim_set_hl(0, "Keyword", { fg = "${base0E}" }) +vim.api.nvim_set_hl(0, "Type", { fg = "${base0A}" }) +vim.api.nvim_set_hl(0, "Special", { fg = "${base0C}" }) +vim.api.nvim_set_hl(0, "PreProc", { fg = "${base0A}" }) +vim.api.nvim_set_hl(0, "Underlined", { fg = "${base0B}", underline = true }) +vim.api.nvim_set_hl(0, "Error", { fg = "${base08}", bg = "${base00}", bold = true }) +vim.api.nvim_set_hl(0, "Todo", { fg = "${base0A}", bg = "${base00}", bold = true }) +'' diff --git a/nvim/default.nix b/nvim/default.nix new file mode 100644 index 0000000..f2589ae --- /dev/null +++ b/nvim/default.nix @@ -0,0 +1,37 @@ +{ pkgs, config, ... }: + +{ + programs.neovim = + let + toLua = str: "lua << EOF\n${str}\nEOF\n"; + toLuaFile = file: "lua << EOF\n${builtins.readFile file}\nEOF\n"; + in { + enable = true; + viAlias = true; + vimAlias = true; + vimdiffAlias = true; + + extraLuaConfig = '' +${import ./colorscheme.nix config} +${builtins.readFile ./options.lua} +${builtins.readFile ./keybindings.lua} +''; + plugins = with pkgs.vimPlugins; [ + { + plugin = comment-nvim; + config = toLuaFile ./plugins/comment.lua; + } + + { + plugin = lualine-nvim; + config = toLua (import ./plugins/lualine/default.nix config); + } + + nvim-web-devicons + { + plugin = nvim-tree-lua; + config = toLuaFile ./plugins/nvim-tree.lua; + } + ]; + }; +} diff --git a/nvim/keybindings.lua b/nvim/keybindings.lua new file mode 100644 index 0000000..d952736 --- /dev/null +++ b/nvim/keybindings.lua @@ -0,0 +1,8 @@ +-- Navigate splits +vim.keymap.set("n", "<C-h>", ":wincmd h<CR>", { silent = true }) +vim.keymap.set("n", "<C-j>", ":wincmd j<CR>", { silent = true }) +vim.keymap.set("n", "<C-k>", ":wincmd k<CR>", { silent = true }) +vim.keymap.set("n", "<C-l>", ":wincmd l<CR>", { silent = true }) + +-- NvimTree +vim.keymap.set("n", "<C-n>", ":NvimTreeToggle<CR>", { silent = true }) diff --git a/nvim/options.lua b/nvim/options.lua new file mode 100644 index 0000000..2897a69 --- /dev/null +++ b/nvim/options.lua @@ -0,0 +1,23 @@ +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +vim.o.clipboard = "unnamedplus" + +vim.o.number = true +vim.o.list = true +vim.o.listchars = "tab:| ,trail:_,lead:_" + +vim.o.laststatus = 3 +vim.opt.fillchars = { eob = " " } + +vim.o.signcolumn = "auto" + +vim.o.tabstop = 2 +vim.o.shiftwidth = 2 +vim.o.expandtab = false + +vim.o.updatetime = 300 + +vim.o.termguicolors = true + +vim.o.mouse = "a" diff --git a/nvim/plugins/comment.lua b/nvim/plugins/comment.lua new file mode 100644 index 0000000..9086261 --- /dev/null +++ b/nvim/plugins/comment.lua @@ -0,0 +1 @@ +require("Comment").setup(); diff --git a/nvim/plugins/lualine/default.nix b/nvim/plugins/lualine/default.nix new file mode 100644 index 0000000..b6be39e --- /dev/null +++ b/nvim/plugins/lualine/default.nix @@ -0,0 +1,6 @@ +config: + +'' +${import ./theme.nix config} +${builtins.readFile ./init.lua} +'' diff --git a/nvim/plugins/lualine/init.lua b/nvim/plugins/lualine/init.lua new file mode 100644 index 0000000..36acda4 --- /dev/null +++ b/nvim/plugins/lualine/init.lua @@ -0,0 +1,6 @@ +require("lualine").setup { + options = { + globalstatus = true, + theme = theme + } +} diff --git a/nvim/plugins/lualine/theme.nix b/nvim/plugins/lualine/theme.nix new file mode 100644 index 0000000..26c420e --- /dev/null +++ b/nvim/plugins/lualine/theme.nix @@ -0,0 +1,15 @@ +config: + +with config.lib.stylix.colors.withHashtag; +'' +local theme = { + normal = { + a = { fg = "${base07}", bg = "${base0D}", gui = "bold" }, + b = { fg = "${base05}", bg = "${base01}" }, + c = { fg = "${base03}", bg = "${base00}" }, + }, + insert = { a = { fg = "${base07}", bg = "${base0B}", gui = "bold" } }, + visual = { a = { fg = "${base07}", bg = "${base0C}", gui = "bold" } }, + replace = { a = { fg = "${base07}", bg = "${base08}", gui = "bold" } }, + command = { a = { fg = "${base07}", bg = "${base0A}", gui = "bold" } }, +}'' diff --git a/nvim/plugins/nvim-tree.lua b/nvim/plugins/nvim-tree.lua new file mode 100644 index 0000000..1aa2e6e --- /dev/null +++ b/nvim/plugins/nvim-tree.lua @@ -0,0 +1,13 @@ +require("nvim-tree").setup { + filters = { + enable = false + }, + renderer = { + indent_markers = { + enable = true + }, + root_folder_label = function(path) + return vim.fn.fnamemodify(path, ":t") + end + } +} diff --git a/polybar/bars/main.nix b/polybar/bars/main.nix new file mode 100644 index 0000000..74213d1 --- /dev/null +++ b/polybar/bars/main.nix @@ -0,0 +1,28 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + width = "100%"; + height = 30; + radius = 3; + fixed-center = false; + + background = "${base00}"; + foreground = "${base05}"; + + line-size = 3; + line-color = "${base08}"; + + border-size = 4; + padding-left = 2; + padding-right = 2; + + module-margin-left = 2; + module-margin-right = 2; + + font-0 = "FiraCode Nerd Font:pixelsize=16;3"; + + modules-left = "bspwm"; + modules-center = "xwindow"; + modules-right = "memory cpu battery time date kernel-version"; +} diff --git a/polybar/default.nix b/polybar/default.nix new file mode 100644 index 0000000..7bc1231 --- /dev/null +++ b/polybar/default.nix @@ -0,0 +1,17 @@ +{ config, ... }: + +{ + services.polybar.enable = true; + services.polybar.script = "polybar main &"; + services.polybar.config = with config.lib.stylix.colors.withHashtag; { + "bar/main" = import ./bars/main.nix config; + "module/xwindow" = import ./modules/xwindow.nix config; + "module/bspwm" = import ./modules/bspwm.nix config; + "module/cpu" = import ./modules/cpu.nix config; + "module/memory" = import ./modules/memory.nix config; + "module/date" = import ./modules/date.nix config; + "module/time" = import ./modules/time.nix config; + "module/battery" = import ./modules/battery.nix config; + "module/kernel-version" = import ./modules/kernel-version.nix config; + }; +} diff --git a/polybar/modules/battery.nix b/polybar/modules/battery.nix new file mode 100644 index 0000000..1bb1264 --- /dev/null +++ b/polybar/modules/battery.nix @@ -0,0 +1,23 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + type = "internal/battery"; + battery = "BAT0"; + adapter = "ADP1"; + full-at = "98"; + + format-charging = "<animation-charging> <label-charging>"; + format-discharging = "<ramp-capacity> <label-discharging>"; + format-full-prefix = "%{F${base0B}}%{F-}"; + label-full = "%percentage_used%%"; + + ramp-capacity-0 = "%{F${base0C}}%{F-}"; + ramp-capacity-1 = "%{F${base0C}}%{F-}"; + ramp-capacity-2 = "%{F${base0C}}%{F-}"; + + animation-charging-0 = "%{F${base0C}}%{F-}"; + animation-charging-1 = "%{F${base0C}}%{F-}"; + animation-charging-2 = "%{F${base0C}}%{F-}"; + animation-charging-framerate = 750; +} diff --git a/polybar/modules/bspwm.nix b/polybar/modules/bspwm.nix new file mode 100644 index 0000000..2bb32c5 --- /dev/null +++ b/polybar/modules/bspwm.nix @@ -0,0 +1,22 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + type = "internal/bspwm"; + + label-focused = "%index%"; + label-focused-background = "${base01}"; + label-focused-underline = "${base0D}"; + label-focused-padding = 2; + + label-occupied = "%index%"; + label-occupied-padding = 2; + + label-urgent = "%index%!"; + label-urgent-background = "${base08}"; + label-urgent-padding = 2; + + label-empty = "%index%"; + label-empty-foreground = "${base03}"; + label-empty-padding = 2; +} diff --git a/polybar/modules/cpu.nix b/polybar/modules/cpu.nix new file mode 100644 index 0000000..d130d07 --- /dev/null +++ b/polybar/modules/cpu.nix @@ -0,0 +1,9 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + type = "internal/cpu"; + interval = 2; + format-prefix = "%{F${base09}} %{F-}"; + label = "%percentage%%"; +} diff --git a/polybar/modules/date.nix b/polybar/modules/date.nix new file mode 100644 index 0000000..4cba926 --- /dev/null +++ b/polybar/modules/date.nix @@ -0,0 +1,10 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + type = "internal/date"; + interval = 60; + date = "%d/%m/%Y"; + label = "%date%"; + format-prefix = "%{F${base0B}} %{F-}"; +} diff --git a/polybar/modules/kernel-version.nix b/polybar/modules/kernel-version.nix new file mode 100644 index 0000000..d858617 --- /dev/null +++ b/polybar/modules/kernel-version.nix @@ -0,0 +1,10 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + type = "custom/script"; + exec = "uname -r"; + interval = 1024; + format-prefix = "%{F${base03}} %{F-}"; + label = "%output%"; +} diff --git a/polybar/modules/memory.nix b/polybar/modules/memory.nix new file mode 100644 index 0000000..230286f --- /dev/null +++ b/polybar/modules/memory.nix @@ -0,0 +1,9 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + type = "internal/memory"; + interval = 2; + format-prefix = "%{F${base0A}} %{F-}"; + label = "%percentage_used%%"; +} diff --git a/polybar/modules/time.nix b/polybar/modules/time.nix new file mode 100644 index 0000000..fde01de --- /dev/null +++ b/polybar/modules/time.nix @@ -0,0 +1,10 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + type = "internal/date"; + interval = 30; + time = "%H:%M"; + label = "%time%"; + format-prefix = "%{F${base0C}} %{F-}"; +} diff --git a/polybar/modules/xwindow.nix b/polybar/modules/xwindow.nix new file mode 100644 index 0000000..7a242d0 --- /dev/null +++ b/polybar/modules/xwindow.nix @@ -0,0 +1,7 @@ +config: + +with config.lib.stylix.colors.withHashtag; +{ + type = "internal/xwindow"; + label = "%title:0:30:...%"; +} diff --git a/rofi/default.nix b/rofi/default.nix new file mode 100644 index 0000000..136550f --- /dev/null +++ b/rofi/default.nix @@ -0,0 +1,9 @@ +{ config, ... }: + +{ + programs.rofi = { + enable = true; + font = "FiraCode Nerd Font 16"; + theme = import ./theme.nix config; + }; +} diff --git a/rofi/theme.nix b/rofi/theme.nix new file mode 100644 index 0000000..dfac2c3 --- /dev/null +++ b/rofi/theme.nix @@ -0,0 +1,89 @@ +config: + +with config.lib.stylix.colors.withHashtag; +builtins.toFile "theme.rasi" +'' + configuration { + font: "${config.programs.rofi.font}"; + + drun { + display-name: " "; + } + + run { + display-name: " "; + } + + window { + display-name: " "; + } + + ssh { + display-name: " "; + } + + timeout { + delay: 10; + action: "kb-cancel"; + } + } + + * { + border: 1; + margin: 0; + padding: 0; + spacing: 0; + + bg: ${base00}; + bg-alt: ${base01}; + fg: ${base05}; + fg-alt: ${base04}; + + background-color: @bg; + text-color: @fg; + } + + window { + transparency: "real"; + } + + mainbox { + children: [inputbar, listview]; + } + + inputbar { + background-color: @bg-alt; + children: [prompt, entry]; + } + + entry { + background-color: inherit; + padding: 12px 3px; + } + + prompt { + background-color: inherit; + padding: 12px; + } + + listview { + lines: 8; + } + + element { + children: [element-text]; + } + + element-icon { + padding: 10px 10px; + } + + element-text { + padding: 10px 10px; + text-color: @fg-alt; + } + + element-text selected { + text-color: @fg; + } +'' diff --git a/stylix/default.nix b/stylix/default.nix new file mode 100644 index 0000000..ed30880 --- /dev/null +++ b/stylix/default.nix @@ -0,0 +1,5 @@ +{ pkgs, ... }: + +{ + stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/classic-dark.yaml"; +} diff --git a/sxhkd/default.nix b/sxhkd/default.nix new file mode 100644 index 0000000..b17bdc0 --- /dev/null +++ b/sxhkd/default.nix @@ -0,0 +1,24 @@ +{ ... }: + +{ + services.sxhkd = { + enable = true; + keybindings = { + "super + r" = "rofi -show run"; + "super + t" = "alacritty"; + "super + q" = "bspc node -c"; + "super + {1-9,0}" = "bspc desktop -f {1-9,10}"; + # resize windows + "super + alt + {h,j,k,l}" = '' + {bspc node @parent/second -z left -20 0; \ + bspc node @parent/first -z right -20 0, \ + bspc node @parent/second -z top 0 +20; \ + bspc node @parent/first -z bottom 0 +20, \ + bspc node @parent/first -z bottom 0 -20; \ + bspc node @parent/second -z top 0 -20, \ + bspc node @parent/first -z right +20 0; \ + bspc node @parent/second -z left +20 0} + ''; + }; + }; +} diff --git a/xresources/default.nix b/xresources/default.nix new file mode 100644 index 0000000..34f986c --- /dev/null +++ b/xresources/default.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + home.file.".xinitrc" = { + source = ./xinitrc; + executable = true; + }; +} diff --git a/xresources/xinitrc b/xresources/xinitrc new file mode 100644 index 0000000..2ac4486 --- /dev/null +++ b/xresources/xinitrc @@ -0,0 +1,4 @@ +#!/bin/sh +polybar main & +sxhkd & +exec bspwm diff --git a/zsh/default.nix b/zsh/default.nix new file mode 100644 index 0000000..ba93024 --- /dev/null +++ b/zsh/default.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + programs.zsh = { + enable = true; + dotDir = ".config/zsh"; + history.path = "$HOME/.cache/zsh/history"; + initExtra = builtins.readFile ./zshrc; + }; +} diff --git a/zsh/zshrc b/zsh/zshrc new file mode 100644 index 0000000..dc0c250 --- /dev/null +++ b/zsh/zshrc @@ -0,0 +1,4 @@ +PROMPT='%F{red}%B┌[%b%F{green}%m%F{red}%B@%b%F{cyan}%n %F{blue}%~%F{red}%B] +%F{red}└>%b%f ' + +autoload -U colors && colors |
