summaryrefslogtreecommitdiff
path: root/nixos
diff options
context:
space:
mode:
Diffstat (limited to 'nixos')
-rw-r--r--nixos/config/git/config10
-rw-r--r--nixos/config/hypr/.luarc.json7
-rw-r--r--nixos/config/hypr/hyprland.lua170
-rw-r--r--nixos/config/nvim/init.lua207
-rw-r--r--nixos/config/rofi/config.rasi27
-rw-r--r--nixos/config/rofi/tokyonight.rasi158
-rw-r--r--nixos/config/user-dirs.dirs8
-rw-r--r--nixos/config/waybar/config.jsonc78
-rw-r--r--nixos/config/waybar/style.css105
-rw-r--r--nixos/configuration.nix24
-rw-r--r--nixos/home.nix606
11 files changed, 570 insertions, 830 deletions
diff --git a/nixos/config/git/config b/nixos/config/git/config
deleted file mode 100644
index a3596b3..0000000
--- a/nixos/config/git/config
+++ /dev/null
@@ -1,10 +0,0 @@
-[user]
- email = nantha@mielota.com
- name = Nantha Sorubakanthan
-[init]
- defaultBranch = main
-[core]
- editor = nvim
- autocrlf = input
-[color]
- ui = true
diff --git a/nixos/config/hypr/.luarc.json b/nixos/config/hypr/.luarc.json
deleted file mode 100644
index b4ecec0..0000000
--- a/nixos/config/hypr/.luarc.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "workspace": {
- "library": [
- "/usr/share/hypr/stubs"
- ]
- }
-}
diff --git a/nixos/config/hypr/hyprland.lua b/nixos/config/hypr/hyprland.lua
deleted file mode 100644
index 5bfb333..0000000
--- a/nixos/config/hypr/hyprland.lua
+++ /dev/null
@@ -1,170 +0,0 @@
-hl.config({
- input = {
- kb_layout = "fr",
- follow_mouse = 1,
- sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
- touchpad = {
- natural_scroll = true,
- },
- },
-})
-
-if false then
- hl.monitor({ output = "HDMI-A-1", mode = "2560x1440@100", position = "0x0", scale = "1", })
-else
- hl.monitor({ output = "eDP-1", mode = "1920x1080@60", position = "0x0", scale = "1", })
- hl.monitor({ output = "HDMI-A-1", mode = "preferred", position = "auto", scale = "1", mirror = "eDP-1" })
-end
-
-
-local terminal = "alacritty"
-local browser = "firefox"
-local menu = "rofi -show drun"
-
-hl.on("hyprland.start", function()
- hl.exec_cmd("dunst")
- hl.exec_cmd("waybar")
- hl.exec_cmd("sh ~/.local/bin/unblock-pipewire.sh")
- hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-theme \"Adwaita-dark\"")
- hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme \"prefer-dark\"")
- hl.exec_cmd("hyprpaper")
-end)
-
-hl.env("GDK_BACKEND", "wayland,x11,*")
-hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
-hl.env("XDG_SESSION_TYPE", "wayland")
-hl.env("XDG_SESSION_DESKTOP", "Hyprland")
-hl.env("XCURSOR_THEME", "Bibata-Modern-Ice")
-hl.env("XCURSOR_SIZE", 24)
-hl.env("HYPRCURSOR_THEME", "Bibata-Modern-Ice")
-hl.env("HYPRCURSOR_SIZE", 24)
-
-hl.config({
- general = {
- gaps_in = 6,
- gaps_out = 12,
- border_size = 2,
- col = {
- active_border = "rgba(122, 162, 247, 1)",
- inactive_border = "rgba(26, 27, 38, 1)",
- },
- resize_on_border = false,
- allow_tearing = false,
- layout = "dwindle",
- },
-
- decoration = {
- rounding = 5,
- rounding_power = 20,
- active_opacity = 1.0,
- inactive_opacity = 1.0,
- shadow = { enabled = false, },
- blur = { enabled = true, },
- },
-
- animations = { enabled = true, },
-})
-
-hl.config({ dwindle = { preserve_split = true, }, })
-hl.config({ master = { new_status = "master", }, })
-hl.config({ scrolling = { fullscreen_on_one_column = true, }, })
-
-hl.config({
- misc = {
- force_default_wallpaper = 0,
- disable_hyprland_logo = true,
- disable_splash_rendering = true,
- background_color = "#000000"
- },
-})
-
-hl.gesture({
- fingers = 3,
- direction = "horizontal",
- action = "workspace"
-})
-
-hl.device({
- name = "epic-mouse-v1",
- sensitivity = -0.5,
-})
-
-
-local mainMod = "SUPER"
-
-hl.bind(mainMod .. " + A", hl.dsp.window.fullscreen())
-hl.bind(mainMod .. " + C", hl.dsp.window.close())
-hl.bind(mainMod .. " + D", hl.dsp.exec_cmd("hyprpicker -naq"))
-hl.bind(mainMod .. " + F", hl.dsp.exec_cmd(browser))
-hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit"))
-hl.bind(mainMod .. " + M",
- hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'"))
-hl.bind(mainMod .. " + P", hl.dsp.window.pseudo())
-hl.bind(mainMod .. " + Q", hl.dsp.exec_cmd(terminal))
-hl.bind(mainMod .. " + return", hl.dsp.exec_cmd("~/.local/bin/spawn-alacritty-cwd"))
-hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(menu))
-hl.bind(mainMod .. " + U", hl.dsp.exec_cmd("pkill waybar ; waybar"))
-hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
-
-hl.bind(mainMod .. " + h", hl.dsp.focus({ direction = "left" }))
-hl.bind(mainMod .. " + j", hl.dsp.focus({ direction = "right" }))
-hl.bind(mainMod .. " + k", hl.dsp.focus({ direction = "up" }))
-hl.bind(mainMod .. " + l", hl.dsp.focus({ direction = "down" }))
-
-hl.bind("print", hl.dsp.exec_cmd("grim -g \"$(slurp)\" - | wl-copy"))
-hl.bind(mainMod .. " + print", hl.dsp.exec_cmd("grim - | wl-copy"))
-
-for i = 1, 10 do
- local key = i % 11
- hl.bind(mainMod .. " + code:" .. key + 9, hl.dsp.focus({ workspace = i }))
- hl.bind(mainMod .. " + SHIFT + code:" .. key + 9, hl.dsp.window.move({ workspace = i }))
-end
-
-hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
-hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
-
-hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
-hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
-
-hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true })
-hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true })
-hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
-hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
-hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
-hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
-hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
-hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
-hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
-hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
-
-
-local suppressMaximizeRule = hl.window_rule({
- -- Ignore maximize requests from all apps. You'll probably like this.
- name = "suppress-maximize-events",
- match = { class = ".*" },
- suppress_event = "maximize",
-})
-
--- suppressMaximizeRule:set_enabled(false)
-
-hl.window_rule({
- name = "fix-xwayland-drags",
- match = {
- class = "^$",
- title = "^$",
- xwayland = true,
- float = true,
- fullscreen = false,
- pin = false,
- },
-
- no_focus = true,
-})
-
-hl.window_rule({
- name = "move-hyprland-run",
- match = { class = "hyprland-run" },
-
- move = "20 monitor_h-120",
- float = true,
-})
diff --git a/nixos/config/nvim/init.lua b/nixos/config/nvim/init.lua
deleted file mode 100644
index b9efd3a..0000000
--- a/nixos/config/nvim/init.lua
+++ /dev/null
@@ -1,207 +0,0 @@
--- GLOBALS
-
-vim.g.mapleader = " "
-
-vim.o.number = true
-vim.o.relativenumber = false
-
-vim.o.undofile = true
-vim.o.ignorecase = true
-
-vim.o.expandtab = false
-vim.o.shiftwidth = 4
-vim.o.tabstop = 4
-vim.o.softtabstop = 4
-vim.o.smartindent = true
-vim.o.autoindent = true
-
-vim.o.signcolumn = "yes"
-vim.o.winborder = 'single'
-vim.o.showmode = true
-vim.o.guicursor = ""
-
-vim.o.swapfile = false
-
-vim.o.cursorline = true
-
--- •⏎.·○◦
-vim.o.list = true
-vim.o.listchars = "tab:🡪 ,trail:·,eol:⏎,space:·,multispace:·,lead:·,leadmultispace:·"
-
-vim.o.completeopt = "fuzzy,menuone,noselect"
-vim.diagnostic.config({ virtual_text = true })
-
--- AUTOCOMPLETION
-
-vim.o.autocomplete = false
-vim.o.completeopt = 'menu,menuone,noselect'
-
--- STATUSBAR
-
-vim.diagnostic.status()
-vim.lsp.status()
-
--- FRENCH SPELLS
-
-local spell_path = vim.fn.stdpath("data") .. "/site/spell"
-if not (vim.uv.fs_stat(spell_path .. "/fr.utf-8.spl") and vim.uv.fs_stat(spell_path .. "/fr.utf-8.sug")) then
- print("Installing french spells")
- -- Other mirrors can be found on https://www.vim.org/mirrors.php
- local mirror = "https://vim.mirror.garr.it/pub/vim/" .. "runtime/spell/"
- local files = { "fr.utf-8.spl", "fr.utf-8.sug" }
- vim.fn.mkdir(spell_path, "p")
- for _, file in ipairs(files) do
- vim.fn.system(string.format("curl -L %s%s -o %s/%s", mirror, file, spell_path, file))
- end
-end
-
-vim.cmd [[set spelllang=en,fr]]
-vim.cmd [[set spell]]
-
--- PLUGINS
-
-vim.pack.add({
- { src = "https://github.com/neovim/nvim-lspconfig" },
- { src = "https://github.com/ibhagwan/fzf-lua" },
- { src = "https://github.com/mfussenegger/nvim-jdtls" },
- { src = "https://github.com/lewis6991/gitsigns.nvim" },
- { src = "https://github.com/stevearc/oil.nvim" },
- { src = "https://github.com/sphamba/smear-cursor.nvim" },
- { src = "https://github.com/saghen/blink.cmp" },
- { src = "https://github.com/saghen/blink.lib" },
- { src = "https://github.com/folke/tokyonight.nvim" },
- { src = "https://github.com/windwp/nvim-autopairs" }
-})
-
-vim.cmd [[
- colorscheme tokyonight-night
- highlight Normal guibg=none
- highlight NonText guibg=none
- highlight Normal ctermbg=none
- highlight NonText ctermbg=none
-]]
-
-
-require("blink.cmp").setup({ keymap = { preset = "enter" } })
-require('blink.cmp').build():wait(60000)
-require("nvim-autopairs").setup({})
-require("gitsigns").setup({})
-require("oil").setup({
- default_file_explorer = true,
- lsp_file_methods = {
- enabled = true,
- timeout_ms = 1000,
- autosave_changes = true,
- },
- columns = {
- "permissions",
- "size",
- },
- float = {
- max_width = 0.7,
- max_height = 0.6,
- border = vim.o.winborder,
- },
- buf_options = {
- buflisted = false,
- bufhidden = "hide",
- },
- view_options = {
- show_hidden = true,
- },
-})
-
-require("smear_cursor").setup({
- smear_insert_mode = true,
- stiffness = 0.7,
- trailing_stiffness = 0.3,
- stiffness_insert_mode = 0.7,
- trailing_stiffness_insert_mode = 0.7,
- damping = 0.67,
- damping_insert_mode = 0.67,
- distance_stop_animating = 0.4,
-})
-
-vim.cmd [[Gitsigns toggle_current_line_blame]]
-
--- MAPPING
-
-local map = vim.keymap.set
-
-map("n", "<C-d>", "<C-d>zz")
-map("n", "<C-u>", "<C-u>zz")
-map("v", "J", ":m '>+1<CR>gv=gv")
-map("v", "K", ":m '<-2<CR>gv=gv")
-map("n", "n", "nzzzv")
-map("n", "N", "Nzzzv")
-map("n", "<leader>s", [[%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
-map("n", "<leader>e", [[:Oil<CR>]])
-map("n", "<leader><CR>", vim.lsp.buf.format)
-
-local fzf = require("fzf-lua") -- blazing fast
-
-map("n", "<leader>F", ":FzfLua<CR>")
-map("n", "<leader>f", fzf.files)
-map("n", "<leader>t", fzf.treesitter)
-map("n", "<leader>/", fzf.live_grep)
-
--- Configure lua_ls to use neovim runtime or all of lua_ls lib.
--- We put way much load on the cpu if we open both.
-local lua_ls_lib = {}
-local neovim_config_path = vim.fn.expand("~/code/dox/artix/home/.config/nvim/init.lua")
-
-if vim.api.nvim_buf_get_name(0) == neovim_config_path then
- lua_ls_lib = vim.api.nvim_get_runtime_file("", true)
-end
-
-vim.lsp.config("lua_ls", {
- settings = {
- Lua = {
- workspace = {
- library = lua_ls_lib
- }
- }
- }
-})
-
--- do not enable jdtls here, we let the nvim-jdtls plugin do everything
-vim.lsp.enable({
- "lua_ls", "cssls", "html", "jsonls", "clangd", "ts_ls", "nil",
- "tinymist", "marksman", "lemminx", "rust_analyzer", "pyright"
-})
-
--- AUTOCMDS
-
-vim.api.nvim_create_autocmd("TextYankPost", {
- callback = function() vim.hl.on_yank() end
-})
-
-vim.api.nvim_create_autocmd("BufWritePost", {
- pattern = "*.tex",
- callback = function() vim.cmd [[! pdflatex % ]] end
-})
-
-vim.api.nvim_create_autocmd("FileType", {
- pattern = "java",
- callback = function(args)
- local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t")
- local workspace_dir = vim.fn.stdpath("data")
- .. package.config:sub(1, 1)
- .. "jdtls-workspace"
- .. package.config:sub(1, 1)
- .. project_name
-
- local config = {
- name = "jdtls",
- cmd = {
- "jdtls",
- "-data",
- workspace_dir,
- },
- root_dir = vim.fs.root(0, { ".git", "meta", "gradlew", "mvnw" }),
- settings = { java = {} },
- init_options = { bundles = {} },
- }
- require('jdtls').start_or_attach(config)
- end
-})
diff --git a/nixos/config/rofi/config.rasi b/nixos/config/rofi/config.rasi
deleted file mode 100644
index 03a46e6..0000000
--- a/nixos/config/rofi/config.rasi
+++ /dev/null
@@ -1,27 +0,0 @@
-@theme "tokyonight.rasi"
-
-configuration {
- modes: "window,drun,run,ssh";
- font: "monospace 18";
- show-icons: true;
- terminal: "alacritty";
- ssh-client: "ssh";
- disable-history: true;
- sort: true;
- sorting-method: "normal";
- case-sensitive: false;
- case-smart: false;
- cycle: true;
- sidebar-mode: false;
- hover-select: true;
-
- timeout {
- action: "kb-cancel";
- delay: 0;
- }
-
- filebrowser {
- directories-first: true;
- sorting-method: "name";
- }
-}
diff --git a/nixos/config/rofi/tokyonight.rasi b/nixos/config/rofi/tokyonight.rasi
deleted file mode 100644
index 2f322fc..0000000
--- a/nixos/config/rofi/tokyonight.rasi
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * ROFI Color theme
- * User: Lairizzle
- * Copyright: Lairizzle
- * GitHub: https://github.com/Lairizzle/rofi-tokyonight
- ********************************************************************************/
-
-* {
- selected-normal-foreground: rgba(125, 207, 255, 1); /* blue highlight */
- foreground: rgba(224, 234, 252, 1); /* bright */
- normal-foreground: @foreground;
- alternate-normal-background: rgba(36, 40, 59, 1); /* #24283b */
- red: rgba(247, 118, 142, 1); /* #f7768e */
- selected-urgent-foreground: rgba(125, 207, 255, 1); /* bright blue */
- blue: rgba(125, 207, 255, 1); /* #7dcfff */
- urgent-foreground: rgba(247, 118, 142, 1); /* #f7768e */
- alternate-urgent-background: rgba(36, 40, 59, 1); /* #24283b */
- active-foreground: rgba(125, 207, 255, 1); /* blue */
- lightbg: rgba(217, 222, 239, 1);
- selected-active-foreground: rgba(125, 207, 255, 1);
- alternate-active-background: rgba(36, 40, 59, 1);
- background: rgba(26, 27, 38, 0.93); /* #1a1b26 */
- bordercolor: rgba(125, 207, 255, 1); /* #7dcfff */
- alternate-normal-foreground: @foreground;
- normal-background: rgba(36, 40, 59, 0.06);
- lightfg: rgba(200, 210, 255, 1); /* bright dim text */
- selected-normal-background: rgba(65, 72, 104, 1); /* #414868 */
- border-color: @bordercolor;
- spacing: 2;
- separatorcolor: rgba(65, 72, 104, 1);
- urgent-background: rgba(26, 27, 38, 1); /* #1a1b26 */
- selected-urgent-background: rgba(247, 118, 142, 1);
- alternate-urgent-foreground: @urgent-foreground;
- background-color: rgba(0, 0, 0, 0);
- alternate-active-foreground: @active-foreground;
- active-background: rgba(26, 27, 38, 1);
- selected-active-background: rgba(65, 72, 104, 1); /* #414868 */
-}
-
-window {
- background-color: @background;
- border: 2;
- border-radius: 8px;
- padding: 5;
- width: 50%;
- height: 50%;
-}
-mainbox {
- border: 0;
- padding: 0;
-}
-message {
- border: 2px 0px 0px ;
- border-color: @separatorcolor;
- padding: 1px ;
-}
-textbox {
- text-color: @foreground;
-}
-listview {
- fixed-height: 0;
- border: 2px 0px 0px ;
- border-color: @separatorcolor;
- spacing: 2px ;
- scrollbar: true;
- padding: 2px 0px 0px ;
-}
-element {
- border: 0;
- padding: 1px ;
-}
-element-text {
- background-color: inherit;
- text-color: inherit;
-}
-element.normal.normal {
- background-color: @normal-background;
- text-color: @normal-foreground;
-}
-element.normal.urgent {
- background-color: @urgent-background;
- text-color: @urgent-foreground;
-}
-element.normal.active {
- background-color: @active-background;
- text-color: @active-foreground;
-}
-element.selected.normal {
- background-color: @selected-normal-background;
- text-color: @selected-normal-foreground;
-}
-element.selected.urgent {
- background-color: @selected-urgent-background;
- text-color: @selected-urgent-foreground;
-}
-element.selected.active {
- background-color: @selected-active-background;
- text-color: @selected-active-foreground;
-}
-element.alternate.normal {
- background-color: @alternate-normal-background;
- text-color: @alternate-normal-foreground;
-}
-element.alternate.urgent {
- background-color: @alternate-urgent-background;
- text-color: @alternate-urgent-foreground;
-}
-element.alternate.active {
- background-color: @alternate-active-background;
- text-color: @alternate-active-foreground;
-}
-scrollbar {
- width: 4px ;
- border: 0;
- handle-width: 8px ;
- padding: 0;
-}
-mode-switcher {
- border: 2px 0px 0px ;
- border-color: @separatorcolor;
-}
-button.selected {
- background-color: @selected-normal-background;
- text-color: @selected-normal-foreground;
-}
-inputbar {
- spacing: 0;
- text-color: @normal-foreground;
- padding: 1px ;
-}
-case-indicator {
- spacing: 0;
- text-color: @normal-foreground;
-}
-entry {
- spacing: 0;
- text-color: @normal-foreground;
-}
-prompt {
- spacing: 0;
- text-color: @normal-foreground;
-}
-inputbar {
- children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
-}
-textbox-prompt-colon {
- expand: false;
- str: ":";
- margin: 0px 0.3em 0em 0em ;
- text-color: @normal-foreground;
-}
-scrollbar {
- width: 4px;
- border: 0;
- handle-width: 8px;
- padding: 0;
- handle-color: rgba(125, 207, 255, 0.8); /* bright blue scrollbar handle */
-}
diff --git a/nixos/config/user-dirs.dirs b/nixos/config/user-dirs.dirs
deleted file mode 100644
index 54d6c75..0000000
--- a/nixos/config/user-dirs.dirs
+++ /dev/null
@@ -1,8 +0,0 @@
-XDG_DESKTOP_DIR="$HOME/desktop"
-XDG_DOWNLOAD_DIR="$HOME/dl"
-XDG_TEMPLATES_DIR="$HOME/templates"
-XDG_PUBLICSHARE_DIR="$HOME/public"
-XDG_DOCUMENTS_DIR="$HOME/code"
-XDG_MUSIC_DIR="$HOME/music"
-XDG_PICTURES_DIR="$HOME/images"
-XDG_VIDEOS_DIR="$HOME/videos"
diff --git a/nixos/config/waybar/config.jsonc b/nixos/config/waybar/config.jsonc
deleted file mode 100644
index 0ad4860..0000000
--- a/nixos/config/waybar/config.jsonc
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "layer": "top",
- "position": "top",
- "height": 30,
- "spacing": 8,
-
- "modules-left": [
- "hyprland/workspaces",
- "hyprland/window"
- ],
-
- "modules-center": [
- ],
-
- "modules-right": [
- "tray",
- "network",
- "pulseaudio",
- "battery",
- "cpu",
- "memory",
- "disk",
- "clock"
- ],
-
- "pulseaudio": {
- "format": "VOL: {volume}%",
- "format-muted": "MUTED",
- "on-click": "sh ~/.local/bin/unblock-pipewire.sh"
- },
-
- "hyprland/workspaces": {
- "format": "{name}",
- "persistent-workspaces": {
- "*" : 10
- }
- },
-
- "hyprland/window" : {
- "max-length": 40,
- "seperate-outputs": false
- },
-
- "tray": {
- "spacing": 10
- },
- "clock": {
- "format": "{:%H:%M:%S}",
- "format-alt": "{:%Y-%m-%d}",
- "tooltip": false,
- "interval": 1
- },
- "cpu": {
- "format": "CPU: {usage}%",
- "tooltip": false
- },
- "memory": {
- "format": "RAM: {used}GiB"
- },
- "disk": {
- "interval": 60,
- "path": "/",
- "format": "ROOT: {free}"
- },
- "battery": {
- "states": {
- "good": 95,
- "warning": 30,
- "critical": 15
- },
- "format": "BAT: {capacity}%",
- "format-plugged": "BAT!: {capacity}%"
- },
- "network": {
- "format": "ONLINE",
- "format-disconnected": "OFFLINE"
- }
-}
diff --git a/nixos/config/waybar/style.css b/nixos/config/waybar/style.css
deleted file mode 100644
index c17a100..0000000
--- a/nixos/config/waybar/style.css
+++ /dev/null
@@ -1,105 +0,0 @@
-@define-color bg #1a1b26;
-@define-color fg #a9b1d6;
-@define-color blk #32344a;
-@define-color red #f7768e;
-@define-color grn #9ece6a;
-@define-color ylw #e0af68;
-@define-color blu #7aa2f7;
-@define-color mag #ad8ee6;
-@define-color cyn #0db9d7;
-@define-color brblk #444b6a;
-@define-color white #ffffff;
-
-* {
- font-family: "0xProto Nerd Font", monospace;
- font-size: 16px;
- font-weight: bold;
-}
-
-window#waybar {
- background-color: @bg;
- color: @fg;
-}
-
-#workspaces button {
- padding: 0 6px;
- color: @cyn;
- background: transparent;
- border-bottom: 3px solid @bg;
-}
-#workspaces button.active {
- color: @cyn;
- border-bottom: 3px solid @mag;
-}
-#workspaces button.empty {
- color: @white;
-}
-#workspaces button.empty.active {
- color: @cyn;
- border-bottom: 3px solid @mag;
-}
-
-#workspaces button.urgent {
- background-color: @red;
-}
-
-button:hover {
- background: inherit;
- box-shadow: inset 0 -3px #ffffff;
-}
-
-#clock,
-#custom-sep,
-#battery,
-#cpu,
-#memory,
-#disk,
-#network,
-#tray,
-#pulseaudio {
- padding: 0 8px;
- color: @white;
-}
-
-#clock {
- color: @cyn;
- border-bottom: 4px solid @cyn;
-}
-
-#battery {
- color: @mag;
- border-bottom: 4px solid @mag;
-}
-
-#disk {
- color: @ylw;
- border-bottom: 4px solid @ylw;
-}
-
-#memory {
- color: @mag;
- border-bottom: 4px solid @mag;
-}
-
-#cpu {
- color: @grn;
- border-bottom: 4px solid @grn;
-}
-
-#network {
- color: @blu;
- border-bottom: 4px solid @blu;
-}
-
-#network.disconnected {
- background-color: @red;
-}
-
-#tray {
- background-color: #2980b9;
-}
-
-#pulseaudio {
- color: @grn;
- border-bottom: 4px solid @grn;
-}
diff --git a/nixos/configuration.nix b/nixos/configuration.nix
index 19ee914..ec28c7d 100644
--- a/nixos/configuration.nix
+++ b/nixos/configuration.nix
@@ -18,6 +18,8 @@
i18n.defaultLocale = "fr_FR.UTF-8";
+ environment.pathsToLink = [ "/share/applications" "/share/xdg-desktop-portal" ];
+
console = {
font = "Lat2-Terminus16";
keyMap = "fr";
@@ -37,11 +39,6 @@
#services.getty.autologinUser = "nantha";
- programs.hyprland = {
- enable = true;
- xwayland.enable = true;
- };
-
users.users.nantha = {
isNormalUser = true;
extraGroups = [ "wheel" ];
@@ -49,23 +46,22 @@
};
environment.systemPackages = with pkgs; [
- brightnessctl
- xdg-user-dirs
- alsa-utils
- alsa-tools
- bibata-cursors
+ brightnessctl
+ alsa-utils
+ alsa-tools
+ bibata-cursors
];
hardware.firmware = with pkgs; [
- linux-firmware
- sof-firmware
- alsa-firmware
+ linux-firmware
+ sof-firmware
+ alsa-firmware
];
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
- nerd-fonts._0xproto
+ nerd-fonts._0xproto
];
};
diff --git a/nixos/home.nix b/nixos/home.nix
index 9e4241f..b299b23 100644
--- a/nixos/home.nix
+++ b/nixos/home.nix
@@ -1,9 +1,36 @@
-{ inputs, config, pkgs, ... }:
+{ inputs, pkgs, config, ... }:
{
- home.username = "nantha";
- home.homeDirectory = "/home/nantha";
- home.stateVersion = "26.05";
+ home = {
+ username = "nantha";
+ homeDirectory = "/home/nantha";
+ stateVersion = "26.05";
+ file.".local/bin/unblock-pipewire.sh".source = ./bin/unblock-pipewire.sh;
+ packages = with pkgs; [
+ hyprpicker
+ grim
+ wl-clipboard
+ xdg-desktop-portal-hyprland
+ tree
+ thunderbird
+ gimp
+
+ hyprpaper
+ dunst
+
+ hyprpwcenter
+ hyprshutdown
+
+ (pkgs.writeShellApplication {
+ name = "ns";
+ runtimeInputs = with pkgs; [
+ fzf
+ nix-search-tv
+ ];
+ text = builtins.readFile "${pkgs.nix-search-tv.src}/nixpkgs.sh";
+ })
+ ];
+ };
programs.bash = {
enable = true;
@@ -27,7 +54,6 @@
export WINEPREFIX="$XDG_DATA_HOME"/wine
export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
export CARGO_HOME="$XDG_DATA_HOME"/cargo
- export EDITOR=nvim
export BROWSER=firefox
export TERMINAL=alacritty
export PAGER=less
@@ -37,47 +63,6 @@
'';
};
- home.file.".config/hypr/hyprland.lua".source = ./config/hypr/hyprland.lua;
- home.file.".config/waybar".source = ./config/waybar;
- home.file.".config/git".source = ./config/git;
- home.file.".config/nvim/init.lua".source = ./config/nvim/init.lua;
- home.file.".config/rofi".source = ./config/rofi;
- home.file.".config/user-dirs.dirs".source = ./config/user-dirs.dirs;
- home.file.".local/bin/unblock-pipewire.sh".source = ./bin/unblock-pipewire.sh;
-
- home.packages = with pkgs; [
- neovim
- nil
-
- hyprpicker
- hyprpaper
- dunst
- grim
- wl-clipboard
- xdg-desktop-portal-hyprland
- waybar
- git
- tree
- thunderbird
- keepassxc
- mpv
- yt-dlp
- pavucontrol
- fzf
- btop
- gimp
- rofi
-
- (pkgs.writeShellApplication {
- name = "ns";
- runtimeInputs = with pkgs; [
- fzf
- nix-search-tv
- ];
- text = builtins.readFile "${pkgs.nix-search-tv.src}/nixpkgs.sh";
- })
- ];
-
programs.alacritty = {
enable = true;
theme = "tokyo_night";
@@ -126,4 +111,533 @@
];
};
};
+
+ services.dunst = {
+ enable = true;
+ iconTheme = {
+ name = "Adwaita";
+ package = pkgs.adwaita-icon-theme;
+ size = "16x16";
+ };
+ settings = {
+ global = {
+ background = "#1A1B26";
+ foreground = "#FFFFFF";
+ frame_color = "#3B4261";
+ frame_width = 5;
+ timeout = 10;
+ alignment = "center";
+ enable_recursive_icon_lookup = true;
+ padding = 5;
+ horizontal_padding = 5;
+ font = "0xProto Nerd font 15";
+ corner_radius = 0;
+ separator_height = 5;
+ };
+ urgency_low = {
+ background = "#7aa2f7";
+ foreground = "#ffffff";
+ timeout = 10;
+ };
+ urgency_critical = {
+ background = "#F7768E";
+ foreground = "#1A1B26";
+ timeout = 10;
+ };
+ };
+ };
+
+ programs.btop = {
+ enable = true;
+ settings = {
+ color_theme = "tokyo-night";
+ theme_background = false;
+ };
+ };
+
+ programs.waybar = {
+ enable = true;
+ systemd.enable = true;
+ settings = {
+ mainBar = {
+ layer = "top";
+ position = "top";
+ height = 30;
+ spacing = 8;
+ modules-left = [
+ "hyprland/workspaces"
+ "hyprland/window"
+ ];
+ modules-center = [];
+ modules-right = [
+ "tray"
+ "network"
+ "pulseaudio"
+ "battery"
+ "cpu"
+ "memory"
+ "disk"
+ "clock"
+ ];
+ "pulseaudio" = {
+ format = "VOL: {volume}%";
+ format-muted = "MUTED";
+ on-click = "sh ~/.local/bin/unblock-pipewire.sh";
+ };
+ "hyprland/workspaces" = {
+ format = "{name}";
+ persistent-workspaces = {
+ "*" = 10;
+ };
+ };
+ "hyprland/window" = {
+ max-length = 40;
+ separate-outputs = false;
+ };
+ "tray" = {
+ spacing = 10;
+ };
+ "clock" = {
+ format = "{:%H:%M:%S}";
+ format-alt = "{:%Y-%m-%d}";
+ tooltip = false;
+ interval = 1;
+ };
+ "cpu" = {
+ format = "CPU: {usage}%";
+ tooltip = false;
+ };
+ "memory" = {
+ format = "RAM: {used}GiB";
+ };
+ "disk" = {
+ interval = 60;
+ path = "/";
+ format = "ROOT: {free}";
+ };
+ "battery" = {
+ states = {
+ good = 95;
+ warning = 30;
+ critical = 15;
+ };
+ format = "BAT: {capacity}%";
+ format-plugged = "BAT!: {capacity}%";
+ };
+ "network" = {
+ format = "ONLINE";
+ format-disconnected = "OFFLINE";
+ };
+ };
+ };
+ style = ''
+ @define-color bg #1a1b26;
+ @define-color fg #a9b1d6;
+ @define-color blk #32344a;
+ @define-color red #f7768e;
+ @define-color grn #9ece6a;
+ @define-color ylw #e0af68;
+ @define-color blu #7aa2f7;
+ @define-color mag #ad8ee6;
+ @define-color cyn #0db9d7;
+ @define-color brblk #444b6a;
+ @define-color white #ffffff;
+
+ * {
+ font-family: "0xProto Nerd Font", monospace;
+ font-size: 16px;
+ font-weight: bold;
+ }
+
+ window#waybar {
+ background-color: @bg;
+ color: @fg;
+ }
+
+ #workspaces button {
+ padding: 0 6px;
+ color: @cyn;
+ background: transparent;
+ border-bottom: 3px solid @bg;
+ }
+ #workspaces button.active {
+ color: @cyn;
+ border-bottom: 3px solid @mag;
+ }
+ #workspaces button.empty {
+ color: @white;
+ }
+ #workspaces button.empty.active {
+ color: @cyn;
+ border-bottom: 3px solid @mag;
+ }
+
+ #workspaces button.urgent {
+ background-color: @red;
+ }
+
+ button:hover {
+ background: inherit;
+ box-shadow: inset 0 -3px #ffffff;
+ }
+
+ #clock,
+ #custom-sep,
+ #battery,
+ #cpu,
+ #memory,
+ #disk,
+ #network,
+ #tray,
+ #pulseaudio {
+ padding: 0 8px;
+ color: @white;
+ }
+
+ #clock {
+ color: @cyn;
+ border-bottom: 4px solid @cyn;
+ }
+
+ #battery {
+ color: @mag;
+ border-bottom: 4px solid @mag;
+ }
+
+ #disk {
+ color: @ylw;
+ border-bottom: 4px solid @ylw;
+ }
+
+ #memory {
+ color: @mag;
+ border-bottom: 4px solid @mag;
+ }
+
+ #cpu {
+ color: @grn;
+ border-bottom: 4px solid @grn;
+ }
+
+ #network {
+ color: @blu;
+ border-bottom: 4px solid @blu;
+ }
+
+ #network.disconnected {
+ background-color: @red;
+ }
+
+ #tray {
+ background-color: #2980b9;
+ }
+
+ #pulseaudio {
+ color: @grn;
+ border-bottom: 4px solid @grn;
+ }
+ '';
+ };
+
+ programs.git = {
+ enable = true;
+ settings = {
+ user = {
+ email = "nantha@mielota.com";
+ name = "Nantha Sorubakanthan";
+ };
+ init = {
+ defaultBranch = "main";
+ };
+ core = {
+ editor = "hx";
+ autocrlf = "input";
+ };
+ color = {
+ ui = true;
+ };
+ };
+ };
+
+ programs.helix = {
+ enable = true;
+ defaultEditor = true;
+ ignores = [ "!.gitignore" ];
+ extraPackages = [
+ pkgs.nil
+ ];
+ languages = {
+ nix = {
+ auto-format = true;
+ };
+ };
+ settings = {
+ theme = "tokyonight-glass";
+ editor = {
+ continue-comments = true;
+ line-number = "absolute";
+ end-of-line-diagnostics = "hint";
+ auto-completion = true;
+ auto-format = false;
+ path-completion = true;
+ default-yank-register = "+";
+ completion-trigger-len = 1;
+ color-modes = true;
+ text-width = 80;
+ indent-guides = {
+ render = true;
+ skip-levels = 1;
+ };
+ whitespace.render = "all";
+ soft-wrap.enable = true;
+ file-picker.hidden = false;
+ lsp.display-messages = true;
+ statusline.left = [
+ "mode"
+ "spinner"
+ "version-control"
+ "file-name"
+ ];
+ inline-diagnostics = {
+ cursor-line = "error";
+ other-lines = "disable";
+ };
+ };
+ keys.normal = {
+ x = "select_line_below";
+ X = "select_line_above";
+ };
+ };
+ themes = {
+ tokyonight-glass = let
+ transparent = "none";
+ in {
+ inherits = "tokyonight";
+ "ui.menu" = transparent;
+ "ui.statusline".bg = transparent;
+ "ui.menu.selected".bg = transparent;
+ "ui.background" = transparent;
+ };
+ };
+ };
+
+ programs.aria2 = {
+ enable = true;
+ };
+
+ programs.yt-dlp = {
+ enable = true;
+ settings = {
+ downloader = "aria2c";
+ downloader-args = "aria2c:'-c -x8 -s8 -k1M'";
+ embed-subs = true;
+ embed-thumbnail = true;
+ sub-langs = "all";
+ };
+ };
+
+ programs.mpv = {
+ enable = true;
+ };
+
+ programs.keepassxc = {
+ enable = true;
+ autostart = false;
+ settings = {
+ Browser.Enabled = true;
+ GUI = {
+ AdvancedSettings = true;
+ ApplicationTheme = "dark";
+ HidePasswords = true;
+ };
+ SSHAgent.Enabled = false;
+ };
+ };
+
+ services.hyprlauncher = {
+ enable = true;
+ settings = {
+ cache.enabled = true;
+ finders = {
+ default_finder = "desktop";
+ unicode_prefix = ".";
+ math_prefix = "=";
+ font_prefix = "'";
+ desktop_icons = true;
+ };
+ general.grab_focus = true;
+ ui = {
+ window_size = "400 260";
+ };
+ };
+ };
+
+ services.hyprpolkitagent.enable = true;
+
+ wayland.windowManager.hyprland = {
+ enable = true;
+ systemd = {
+ enable = true;
+ enableXdgAutostart = true;
+ };
+ xwayland.enable = true;
+ settings = {
+ config = {
+ input = {
+ kb_layout = "fr";
+ follow_mouse = 1;
+ sensitivity = 0;
+ touchpad = {
+ natural_scroll = true;
+ };
+ };
+ general = {
+ gaps_in = 6;
+ gaps_out = 12;
+ border_size = 2;
+ col = {
+ active_border = "rgba(122, 162, 247, 1)";
+ inactive_border = "rgba(26, 27, 38, 1)";
+ };
+ resize_on_border = false;
+ allow_tearing = false;
+ layout = "dwindle";
+ };
+ decoration = {
+ rounding = 5;
+ rounding_power = 20;
+ active_opacity = 1.0;
+ inactive_opacity = 1.0;
+ shadow.enabled = false;
+ blur.enabled = true;
+ };
+ misc = {
+ force_default_wallpaper = 0;
+ disable_hyprland_logo = true;
+ disable_splash_rendering = true;
+ background_color = "#000000";
+ };
+ animations.enabled = true;
+ dwindle.preserve_split = true;
+ master.new_status = "master";
+ scrolling.fullscreen_on_one_column = true;
+ };
+ gesture = {
+ fingers = 3;
+ direction = "horizontal";
+ action = "workspace";
+ };
+ window_rule = [
+ {
+ name = "suppress-maximize-events";
+ match.class = ".*";
+ suppress_event = "maximize";
+ }
+ {
+ name = "fix-xwayland-drags";
+ match = {
+ class = "^$";
+ title= "^$";
+ xwayland = true;
+ float = true;
+ fullscreen = false;
+ pin = false;
+ };
+ }
+ {
+ name = "move-hyprland-run";
+ match.class = "hyprland-run";
+ move = "20 monitor_h-120";
+ float = true;
+ }
+ ];
+ mod._var = "SUPER";
+ };
+ extraConfig = ''
+ if false then
+ hl.monitor({ output = "HDMI-A-1", mode = "2560x1440@100", position = "0x0", scale = "1", })
+ else
+ hl.monitor({ output = "eDP-1", mode = "1920x1080@60", position = "0x0", scale = "1", })
+ hl.monitor({ output = "HDMI-A-1", mode = "preferred", position = "auto", scale = "1", mirror = "eDP-1" })
+ end
+
+
+ local terminal = "alacritty"
+ local browser = "firefox"
+ local menu = "hyprlauncher"
+
+ hl.on("hyprland.start", function()
+ hl.exec_cmd("dunst")
+ hl.exec_cmd("sh ~/.local/bin/unblock-pipewire.sh")
+ end)
+
+ hl.env("GDK_BACKEND", "wayland,x11,*")
+ hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
+ hl.env("XDG_SESSION_TYPE", "wayland")
+ hl.env("XDG_SESSION_DESKTOP", "Hyprland")
+ hl.env("XCURSOR_THEME", "Bibata-Modern-Ice")
+ hl.env("XCURSOR_SIZE", 24)
+ hl.env("HYPRCURSOR_THEME", "Bibata-Modern-Ice")
+ hl.env("HYPRCURSOR_SIZE", 24)
+
+ local mainMod = "SUPER"
+
+ hl.bind(mainMod .. " + A", hl.dsp.window.fullscreen())
+ hl.bind(mainMod .. " + C", hl.dsp.window.close())
+ hl.bind(mainMod .. " + D", hl.dsp.exec_cmd("hyprpicker -naq"))
+ hl.bind(mainMod .. " + F", hl.dsp.exec_cmd(browser))
+ hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit"))
+ hl.bind(mainMod .. " + M", hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'"))
+ hl.bind(mainMod .. " + P", hl.dsp.window.pseudo())
+ hl.bind(mainMod .. " + Q", hl.dsp.exec_cmd(terminal))
+ hl.bind(mainMod .. " + return", hl.dsp.exec_cmd("~/.local/bin/spawn-alacritty-cwd"))
+ hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(menu))
+ hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
+
+ hl.bind(mainMod .. " + h", hl.dsp.focus({ direction = "left" }))
+ hl.bind(mainMod .. " + j", hl.dsp.focus({ direction = "right" }))
+ hl.bind(mainMod .. " + k", hl.dsp.focus({ direction = "up" }))
+ hl.bind(mainMod .. " + l", hl.dsp.focus({ direction = "down" }))
+
+ hl.bind("print", hl.dsp.exec_cmd("grim -g \"$(slurp)\" - | wl-copy"))
+ hl.bind(mainMod .. " + print", hl.dsp.exec_cmd("grim - | wl-copy"))
+
+ for i = 1, 10 do
+ local key = i % 11
+ hl.bind(mainMod .. " + code:" .. key + 9, hl.dsp.focus({ workspace = i }))
+ hl.bind(mainMod .. " + SHIFT + code:" .. key + 9, hl.dsp.window.move({ workspace = i }))
+ end
+
+ hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
+ hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
+
+ hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
+ hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
+
+ hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true })
+ hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true })
+ hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
+ hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
+ hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
+ hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
+ hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
+ hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
+ hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
+ hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
+ '';
+ };
+
+ xdg.userDirs = {
+ enable = true;
+ desktop = "${config.home.homeDirectory}/desktop";
+ documents = "${config.home.homeDirectory}/sources";
+ download = "${config.home.homeDirectory}/dl";
+ music = "${config.home.homeDirectory}/music";
+ pictures = "${config.home.homeDirectory}/images";
+ projects = "${config.home.homeDirectory}/images";
+ publicShare = "${config.home.homeDirectory}/public";
+ templates = "${config.home.homeDirectory}/trash";
+ videos = "${config.home.homeDirectory}/videos";
+ createDirectories = true;
+ };
}