diff --git a/README.md b/README.md deleted file mode 100644 index 954af14..0000000 --- a/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# nixos-system-config -My modular NixOS configuration. - -## About -This is the NixOS configuration that I daily drive on my system. Feel free to use, -modify and share this configuration to your heart's content, no attribution required. - -## Screenshots -|KDE Plasma|Hyprland| -|---|---| -|![plasma screenshot](assets/screenshots/kde.png)|![hyprland screenshot](assets/screenshots/hyprland.png)| - -## Layout -``` -├── assets ; Binary assets tracked in git -│   ├── screenshot.png -│   └── wallpaper.jpg -├── dotfiles ; Distro agnostic dotfiles -│   └── ... ; Stores configurations that do not depend on Nix -├── flake.lock -├── flake.nix ; Entry point -├── home ; home-manager configuration -│   ├── default.nix ; User and home-manager options -│   ├── packages ; Per-package home-manager configuration -│   │   └── ... -│   └── persist.nix ; Home opt-in state directories and files -├── hosts ; Host configurations -│   └── workstation -│   ├── default.nix ; Host configuration.nix equivalent -│   ├── hardware-configuration.nix ; Host hardware specific configuration -│   └── persist.nix ; System wide opt-in state directories and files -├── lib ; Custom helper functions -│   ├── default.nix -│   └── ... -├── modules ; System modules and sets of packages -│   ├── desktop -│   │   ├── apps -│   │   │   └── ... -│   │   └── environments -│   │   └── ... -│   └── system -│   └── ... -├── README.md -└── secrets ; Location of secrets not tracked in the git tree - └── pass -``` - -## Installing -This configuration uses impermanence with btrfs snapshots so you'll have to partition -your system in a certain way. - -First you'll need this partition layout, assuming you're installing on `nvme0n1`. -``` -DEVICE FILESYSTEM PURPOSE -/dev/nvme0n1 -├─/dev/nvme0n1p1 vfat EFI partition -└─/dev/nvme0n1p2 btrfs Partition to house all the subvolumes -``` - -Inside of the btrfs root volume we're going to need 2 subvolumes. -``` -SUBVOLUME MOUNT PURPOSE -root / Impermanent data -nix /nix Permanent data -``` - -You'll also need to create a read-only snapshot of the `root` subvolume -and call it `root-blank`. - -After you've mounted all the subvolumes and EFI partition (`/boot`) in `/mnt` -clone this repository in to `/mnt/nix/config`. Adjust all the block ids of the partitions -in `hardware-configuration.nix` and create a hashed password using `mkpasswd` and store it -in the `secrets` directory as `pass`. - -Finally, in the config directory run `nixos-install --flake '.#'`, reboot and you're done. - -## Updating -This configuration sets up [nh](https://github.com/viperML/nh) for a prettier and more convenient -way of keeping the system up to date. To update you can simply run: -```sh -nix flake update /nix/config -nh os switch -``` diff --git a/assets/screenshots/hyprland.png b/assets/screenshots/hyprland.png deleted file mode 100644 index 3c7667e..0000000 Binary files a/assets/screenshots/hyprland.png and /dev/null differ diff --git a/assets/screenshots/kde.png b/assets/screenshots/kde.png deleted file mode 100644 index 48eebf3..0000000 Binary files a/assets/screenshots/kde.png and /dev/null differ diff --git a/assets/wallpapers/hyprland.jpg b/assets/wallpapers/hyprland.jpg deleted file mode 100644 index c371260..0000000 Binary files a/assets/wallpapers/hyprland.jpg and /dev/null differ diff --git a/assets/wallpapers/kde.png b/assets/wallpapers/kde.png deleted file mode 100644 index d67050f..0000000 Binary files a/assets/wallpapers/kde.png and /dev/null differ diff --git a/assets/wallpapers/river.png b/assets/wallpapers/river.png deleted file mode 100644 index 879b65a..0000000 Binary files a/assets/wallpapers/river.png and /dev/null differ diff --git a/dotfiles/deploy.sh b/dotfiles/deploy.sh deleted file mode 100755 index 046bd5a..0000000 --- a/dotfiles/deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -for f in *; do - [ -d "$f" ] && ln -svf "$PWD/$f" "$HOME/.config" -done - diff --git a/dotfiles/nvim/ftplugin/lua.lua b/dotfiles/nvim/ftplugin/lua.lua deleted file mode 100644 index 4f74ce9..0000000 --- a/dotfiles/nvim/ftplugin/lua.lua +++ /dev/null @@ -1,3 +0,0 @@ -vim.bo.tabstop = 2 -vim.bo.softtabstop = 2 -vim.bo.shiftwidth = 2 diff --git a/dotfiles/nvim/ftplugin/nix.lua b/dotfiles/nvim/ftplugin/nix.lua deleted file mode 100644 index 4f74ce9..0000000 --- a/dotfiles/nvim/ftplugin/nix.lua +++ /dev/null @@ -1,3 +0,0 @@ -vim.bo.tabstop = 2 -vim.bo.softtabstop = 2 -vim.bo.shiftwidth = 2 diff --git a/dotfiles/nvim/init.lua b/dotfiles/nvim/init.lua deleted file mode 100644 index bd26c3b..0000000 --- a/dotfiles/nvim/init.lua +++ /dev/null @@ -1,3 +0,0 @@ -require"settings" -require"plugins" - diff --git a/dotfiles/nvim/lua/plugins/cmp.lua b/dotfiles/nvim/lua/plugins/cmp.lua deleted file mode 100644 index 1c5d700..0000000 --- a/dotfiles/nvim/lua/plugins/cmp.lua +++ /dev/null @@ -1,55 +0,0 @@ -return { - "hrsh7th/nvim-cmp", - dependencies = { - "L3MON4D3/LuaSnip", - "saadparwaiz1/cmp_luasnip", - "hrsh7th/cmp-buffer", - "hrsh7th/cmp-path", - "hrsh7th/cmp-nvim-lsp", - { - "tamago324/cmp-zsh", - config = function() - require"cmp_zsh".setup { - zshrc = true, - filetypes = { "bash", "zsh", "sh" }, - } - end, - }, - "ray-x/cmp-treesitter", - "hrsh7th/cmp-nvim-lua", - "andersevenrud/cmp-tmux", - }, - config = function() - local cmp = require"cmp" - cmp.setup { - snippet = { - expand = function(args) - require"luasnip".lsp_expand(args.body) - end, - }, - view = { - entries = "native", - }, - mapping = cmp.mapping.preset.insert { - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.confirm({ select = true }), - [''] = cmp.mapping.abort(), - }, - sources = { - { name = "path" }, - { name = "luasnip" }, - { name = "zsh" }, - { name = "nvim_lsp" }, - { name = "buffer" }, - { name = "treesitter" }, - { name = "nvim-lua" }, - { name = "tmux" }, - }, - } - end -} - diff --git a/dotfiles/nvim/lua/plugins/comment.lua b/dotfiles/nvim/lua/plugins/comment.lua deleted file mode 100644 index 72d3b83..0000000 --- a/dotfiles/nvim/lua/plugins/comment.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - "numToStr/Comment.nvim", - opts = {}, - lazy = false -} diff --git a/dotfiles/nvim/lua/plugins/dressing.lua b/dotfiles/nvim/lua/plugins/dressing.lua deleted file mode 100644 index 8d3e951..0000000 --- a/dotfiles/nvim/lua/plugins/dressing.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - "stevearc/dressing.nvim", - config = function() - require"dressing".setup { - } - end -} diff --git a/dotfiles/nvim/lua/plugins/ibl.lua b/dotfiles/nvim/lua/plugins/ibl.lua deleted file mode 100644 index fa22141..0000000 --- a/dotfiles/nvim/lua/plugins/ibl.lua +++ /dev/null @@ -1,11 +0,0 @@ -return { - "lukas-reineke/indent-blankline.nvim", - main = "ibl", - opts = {}, - opts = { - indent = { - char = "▏" - } - } -} - diff --git a/dotfiles/nvim/lua/plugins/init.lua b/dotfiles/nvim/lua/plugins/init.lua deleted file mode 100644 index 9875d36..0000000 --- a/dotfiles/nvim/lua/plugins/init.lua +++ /dev/null @@ -1,22 +0,0 @@ -if vim.fn.executable("git") ~= 1 then - vim.notify("git is not installed. Skipping plugins.", vim.log.levels.WARN) - return -end - -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazypath, - }) -end -vim.opt.rtp:prepend(lazypath) - -plugins = require"util.require_dir"(vim.fn.stdpath("config").."/lua/plugins/", true) - -require"lazy".setup(plugins) - diff --git a/dotfiles/nvim/lua/plugins/kanagawa.lua b/dotfiles/nvim/lua/plugins/kanagawa.lua deleted file mode 100644 index 06ffeb6..0000000 --- a/dotfiles/nvim/lua/plugins/kanagawa.lua +++ /dev/null @@ -1,49 +0,0 @@ -return { - "rebelot/kanagawa.nvim", - config = function() - require"kanagawa".setup { - theme = "dragon", - background = { - dark = "dragon", - light = "lotus", - }, - transparent = true, - colors = { - theme = { - all = { - ui = { - bg_gutter = "none", - }, - }, - }, - }, - overrides = function(colors) - local theme = colors.theme - return { - NormalFloat = { bg = "none" }, - FloatBorder = { bg = "none" }, - FloatTitle = { bg = "none" }, - - -- Save an hlgroup with dark background and dimmed foreground - -- so that you can use it where your still want darker windows. - -- E.g.: autocmd TermOpen * setlocal winhighlight=Normal:NormalDark - NormalDark = { fg = theme.ui.fg_dim, bg = theme.ui.bg_m3 }, - - -- Popular plugins that open floats will link to NormalFloat by default; - -- set their background accordingly if you wish to keep them dark and borderless - LazyNormal = { bg = theme.ui.bg_m3, fg = theme.ui.fg_dim }, - MasonNormal = { bg = theme.ui.bg_m3, fg = theme.ui.fg_dim }, - TelescopeTitle = { fg = theme.ui.special, bold = true }, - TelescopePromptNormal = { bg = theme.ui.bg_p1 }, - TelescopePromptBorder = { fg = theme.ui.bg_p1, bg = theme.ui.bg_p1 }, - TelescopeResultsNormal = { fg = theme.ui.fg_dim, bg = theme.ui.bg_m1 }, - TelescopeResultsBorder = { fg = theme.ui.bg_m1, bg = theme.ui.bg_m1 }, - TelescopePreviewNormal = { bg = theme.ui.bg_dim }, - TelescopePreviewBorder = { bg = theme.ui.bg_dim, fg = theme.ui.bg_dim }, - } - end, - } - vim.cmd"colorscheme kanagawa" - end -} - diff --git a/dotfiles/nvim/lua/plugins/lsp/c.lua b/dotfiles/nvim/lua/plugins/lsp/c.lua deleted file mode 100644 index c0a7c09..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/c.lua +++ /dev/null @@ -1,8 +0,0 @@ -return function () - require"lspconfig".ccls.setup { - capabilities = require"cmp_nvim_lsp".default_capabilities(), - filetypes = { - "c" - } - } -end diff --git a/dotfiles/nvim/lua/plugins/lsp/cxx.lua b/dotfiles/nvim/lua/plugins/lsp/cxx.lua deleted file mode 100644 index 3560eb4..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/cxx.lua +++ /dev/null @@ -1,8 +0,0 @@ -return function () - require"lspconfig".clangd.setup { - capabilities = require"cmp_nvim_lsp".default_capabilities(), - filetypes = { - "cpp", "objc", "objcpp", "cuda", "proto" - } - } -end diff --git a/dotfiles/nvim/lua/plugins/lsp/haskell.lua b/dotfiles/nvim/lua/plugins/lsp/haskell.lua deleted file mode 100644 index 7def886..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/haskell.lua +++ /dev/null @@ -1,4 +0,0 @@ -return function() - require"lspconfig".hls.setup {} -end - diff --git a/dotfiles/nvim/lua/plugins/lsp/js.lua b/dotfiles/nvim/lua/plugins/lsp/js.lua deleted file mode 100644 index 56d22a8..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/js.lua +++ /dev/null @@ -1,5 +0,0 @@ -return function () - require"lspconfig".ts_ls.setup { - capabilities = require"cmp_nvim_lsp".default_capabilities() - } -end diff --git a/dotfiles/nvim/lua/plugins/lsp/latex.lua b/dotfiles/nvim/lua/plugins/lsp/latex.lua deleted file mode 100644 index 3ffe941..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/latex.lua +++ /dev/null @@ -1,5 +0,0 @@ -return function () - require"lspconfig".texlab.setup { - capabilities = require"cmp_nvim_lsp".default_capabilities() - } -end diff --git a/dotfiles/nvim/lua/plugins/lsp/lua.lua b/dotfiles/nvim/lua/plugins/lsp/lua.lua deleted file mode 100644 index 3d7ad98..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/lua.lua +++ /dev/null @@ -1,24 +0,0 @@ -return function() - require'lspconfig'.lua_ls.setup { - capabilities = require"cmp_nvim_lsp".default_capabilities(), - on_init = function(client) - local path = client.workspace_folders[1].name - if vim.loop.fs_stat(path..'/.luarc.json') or vim.loop.fs_stat(path..'/.luarc.jsonc') then - return - end - - client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, { - runtime = { - version = 'LuaJIT' - }, - workspace = { - checkThirdParty = false, - library = vim.api.nvim_get_runtime_file("", true) - } - }) - end, - settings = { - Lua = {} - } - } -end diff --git a/dotfiles/nvim/lua/plugins/lsp/nix.lua b/dotfiles/nvim/lua/plugins/lsp/nix.lua deleted file mode 100644 index 6c326bd..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/nix.lua +++ /dev/null @@ -1,6 +0,0 @@ -return function () - require"lspconfig".nil_ls.setup { - capabilities = require"cmp_nvim_lsp".default_capabilities() - } -end - diff --git a/dotfiles/nvim/lua/plugins/lsp/php.lua b/dotfiles/nvim/lua/plugins/lsp/php.lua deleted file mode 100644 index d45800c..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/php.lua +++ /dev/null @@ -1,5 +0,0 @@ -return function () - require"lspconfig".intelephense. setup { - capabilities = require"cmp_nvim_lsp".default_capabilities(), - } -end diff --git a/dotfiles/nvim/lua/plugins/lsp/python.lua b/dotfiles/nvim/lua/plugins/lsp/python.lua deleted file mode 100644 index f8c2dcc..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/python.lua +++ /dev/null @@ -1,10 +0,0 @@ -return function() - require"lspconfig".basedpyright.setup { - settings = { - python = { - pythonPath = vim.fn.exepath("python3"), - }, - }, - } -end - diff --git a/dotfiles/nvim/lua/plugins/lsp/rust.lua b/dotfiles/nvim/lua/plugins/lsp/rust.lua deleted file mode 100644 index a320631..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/rust.lua +++ /dev/null @@ -1,11 +0,0 @@ -return function() - require"lspconfig".rust_analyzer.setup { - settings = { - ["rust-analyzer"] = { - diagnostics = { - enable = false, - }, - }, - }, - } -end diff --git a/dotfiles/nvim/lua/plugins/lsp/shell.lua b/dotfiles/nvim/lua/plugins/lsp/shell.lua deleted file mode 100644 index 72772f2..0000000 --- a/dotfiles/nvim/lua/plugins/lsp/shell.lua +++ /dev/null @@ -1,5 +0,0 @@ -return function() - require"lspconfig".bashls.setup { - capabilities = require"cmp_nvim_lsp".default_capabilities(), - } -end diff --git a/dotfiles/nvim/lua/plugins/lspconfig.lua b/dotfiles/nvim/lua/plugins/lspconfig.lua deleted file mode 100644 index f764ee3..0000000 --- a/dotfiles/nvim/lua/plugins/lspconfig.lua +++ /dev/null @@ -1,29 +0,0 @@ -return { - "neovim/nvim-lspconfig", - config = function() - local require_dir = require"util.require_dir" - local lspees = require_dir(vim.fn.stdpath("config").."/lua/plugins/lsp/", "plugins.lsp") - for _, lspee in ipairs(lspees) do - lspee() - end - - local map = require"util.map" - local vlb = vim.lsp.buf - local format = function() - vlb.format { async = true } - end - vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("UserLspConfig", {}), - callback = function() - map("n", "lgD", vlb.declaration, "[l]sp [g]o to [D]eclaration") - map("n", "lgd", vlb.definition, "[l]sp [g]o to [d]definition") - map("n", "lgi", vlb.implementation, "[l]sp [g]o to [i]mplementation") - map("n", "lgr", vlb.references, "[l]sp [g]o to [r]eferences") - map("n", "lh", vlb.hover, "[l]sp [h]over over selection") - map("n", "lfm", format, "[l]sp [f]or[m]at file") - map("n", "lca", vlb.code_action, "[l]sp [C]ode [a]ction") - end, - }) - end -} - diff --git a/dotfiles/nvim/lua/plugins/lualine.lua b/dotfiles/nvim/lua/plugins/lualine.lua deleted file mode 100644 index a54b7c5..0000000 --- a/dotfiles/nvim/lua/plugins/lualine.lua +++ /dev/null @@ -1,139 +0,0 @@ -return { - "nvim-lualine/lualine.nvim", - dependencies = { - "nvim-tree/nvim-web-devicons", - }, - config = function() - -- Inspired by https://github.com/nvim-lualine/lualine.nvim/blob/master/examples/evil_lualine.lua - local rgb_to_hex = require"util.rgb_to_hex" - local hl = require"util.hl" - local config = { - options = { - component_separators = "", - section_separators = "", - theme = { - normal = { - c = { - fg = rgb_to_hex(hl("Normal").fg), - bg = "none", - }, - }, - inactive = { - c = { - fg = rgb_to_hex(hl("Normal").fg), - bg = "none", - }, - }, - }, - }, - sections = { - lualine_a = {}, lualine_b = {}, lualine_y = {}, lualine_z = {}, -- Remove defaults - lualine_c = {}, lualine_x = {}, -- Extend these later - }, - inactive_sections = { - lualine_a = {}, lualine_b = {}, lualine_c = {}, lualine_x = {}, lualine_y = {}, lualine_z = {}, - }, - } - - local function buffer_not_empty() - return vim.fn.empty(vim.fn.expand("%:t")) ~= 1 - end - - local function ins_l(component) - table.insert(config.sections.lualine_c, component) - end - - local function ins_r(component) - table.insert(config.sections.lualine_x, component) - end - - local distro = require"util.get_distro"() - - ins_l { - function() - return "▊" - end, - padding = { - left = 0, - right = 0, - }, - color = { - fg = rgb_to_hex(hl("Comment").fg), - }, - } - - ins_l { - function() - return distro.traits.icon - end, - color = { - fg = distro.traits.color, - }, - } - - ins_l { - "filename", - cond = buffer_not_empty, - color = { - fg = rgb_to_hex(hl("Operator").fg), - } - } - - ins_l { - "filesize", - cond = buffer_not_empty, - } - - ins_l { - "o:encoding", - cond = buffer_not_empty, - } - - ins_l { - "fileformat", - icons_enabled = false, - cond = buffer_not_empty, - } - - ins_r { "diagnostics" } - ins_r { "diff" } - - ins_r { - "branch", - padding = { - right = 0, - }, - color = { - fg = rgb_to_hex(hl("Constant").fg) - } - } - - ins_r { - "location", - } - - ins_r { - "mode", - fmt = string.lower, - color = { - fg = rgb_to_hex(hl("String").fg), - } - } - - ins_r { - function() - return "▊" - end, - padding = { - left = 0, - right = 0, - }, - color = { - fg = rgb_to_hex(hl("Comment").fg), - } - } - - require"lualine".setup(config) - end -} - diff --git a/dotfiles/nvim/lua/plugins/nvim-colorizer.lua b/dotfiles/nvim/lua/plugins/nvim-colorizer.lua deleted file mode 100644 index 2fa30e4..0000000 --- a/dotfiles/nvim/lua/plugins/nvim-colorizer.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "norcalli/nvim-colorizer.lua", - config = function() - require"colorizer".setup() - end, -} diff --git a/dotfiles/nvim/lua/plugins/telescope.lua b/dotfiles/nvim/lua/plugins/telescope.lua deleted file mode 100644 index e93dbb0..0000000 --- a/dotfiles/nvim/lua/plugins/telescope.lua +++ /dev/null @@ -1,24 +0,0 @@ -return { - "nvim-telescope/telescope.nvim", - dependencies = { "nvim-lua/plenary.nvim" }, - config = function() - require"telescope".setup {} - - local tb = require"telescope.builtin" - local map = require"util.map" - - -- Default pickers - map("n", "tf", tb.find_files,"[T]elescope [f]iles") - map("n", "tg", tb.live_grep, "[T]elescope [g]rep") - map("n", "tb", tb.buffers, "[T]elescope [b]uffers") - map("n", "tm", function() - tb.man_pages({ "ALL" }) - end, "[T]elescope [m]an pages") - map("n", "tk", tb.keymaps, "[T]elescope [k]eymaps") - map("n", "tk", tb.keymaps, "[T]elescope [k]eymaps") - - -- LSP pickers - map("n", "tld", tb.diagnostics, "[T]elescope [l]sp [d]iagnostics") - map("n", "tlr", tb.lsp_references, "[T]elescope [l]sp [r]eferences") - end, -} diff --git a/dotfiles/nvim/lua/plugins/treesitter.lua b/dotfiles/nvim/lua/plugins/treesitter.lua deleted file mode 100644 index e50163a..0000000 --- a/dotfiles/nvim/lua/plugins/treesitter.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - "nvim-treesitter/nvim-treesitter", - config = function() - require"nvim-treesitter.configs".setup { - ensure_installed = "all", -- pipebomb - highlight = { - enable = true, - }, - indent = { - enable = true, - }, - } - end, - run = ":TSUpdate", -} diff --git a/dotfiles/nvim/lua/plugins/vimtex.lua b/dotfiles/nvim/lua/plugins/vimtex.lua deleted file mode 100644 index d388535..0000000 --- a/dotfiles/nvim/lua/plugins/vimtex.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "lervag/vimtex", - lazy = false, - init = function() - vim.g.vimtex_view_method = "zathura" - end -} - diff --git a/dotfiles/nvim/lua/settings/autocmds.lua b/dotfiles/nvim/lua/settings/autocmds.lua deleted file mode 100644 index 471a38c..0000000 --- a/dotfiles/nvim/lua/settings/autocmds.lua +++ /dev/null @@ -1,37 +0,0 @@ -vim.api.nvim_create_autocmd("BufReadPost", { - pattern = "*.h", - callback = function() - -- Toggle .h files between being interpreted as C and C++ - -- in case I have to work on a C++ header that was saved - -- (incorrectly) as a C header file. - vim.api.nvim_create_user_command("Fytwmmrt", function() - if not vim.b.fu then - vim.b.fu = true - vim.bo.filetype = "cpp" - vim.cmd([[ - LspStop ccls - LspStart clangd - ]]) - else - vim.b.fu = false - vim.bo.filetype = "c" - vim.cmd([[ - LspStop ccls - LspStart clangd - ]]) - end - end, { desc = "Fuck you to whoever made me run this."}) - - -- Set all .h files to be interpreted as C by default instead - -- of C++. If you use .h for your C++ headers instead of .hpp - -- you should be ashamed of yourself and change and grow as a - -- person as to not repeat such heretical offenses. - if not vim.b.fu then - vim.bo.filetype = "c" - vim.cmd([[ - LspStop clangd - LspStart ccls - ]]) - end - end, -}) diff --git a/dotfiles/nvim/lua/settings/init.lua b/dotfiles/nvim/lua/settings/init.lua deleted file mode 100644 index 9bb29a0..0000000 --- a/dotfiles/nvim/lua/settings/init.lua +++ /dev/null @@ -1,3 +0,0 @@ -require"settings.options" -require"settings.autocmds" -require"settings.keymaps" diff --git a/dotfiles/nvim/lua/settings/keymaps.lua b/dotfiles/nvim/lua/settings/keymaps.lua deleted file mode 100644 index 56c002f..0000000 --- a/dotfiles/nvim/lua/settings/keymaps.lua +++ /dev/null @@ -1,7 +0,0 @@ -local map = require"util.map" - -map("n", "", "", "Mapleader") -vim.g.mapleader = " " - -map("n", "df", vim.diagnostic.open_float, "[D]iagnostics [f]loat") - diff --git a/dotfiles/nvim/lua/settings/options.lua b/dotfiles/nvim/lua/settings/options.lua deleted file mode 100644 index 99c1318..0000000 --- a/dotfiles/nvim/lua/settings/options.lua +++ /dev/null @@ -1,28 +0,0 @@ -local options = { - tabstop = 4, - softtabstop = 4, - shiftwidth = 4, - expandtab = true, - number = true, - relativenumber = true, - fileencoding = "utf-8", - cursorline = true, - wrap = false, - signcolumn = "yes", - swapfile = false, - errorbells = false, - undofile = true, - incsearch = true, - hlsearch = false, - backup = false, - termguicolors = true, - scrolloff = 8, - sidescrolloff = 8, -} - -for option, value in pairs(options) do - pcall(function() - vim.opt[option] = value - end) -end - diff --git a/dotfiles/nvim/lua/util/get_distro.lua b/dotfiles/nvim/lua/util/get_distro.lua deleted file mode 100644 index 7bc39a8..0000000 --- a/dotfiles/nvim/lua/util/get_distro.lua +++ /dev/null @@ -1,73 +0,0 @@ -local function distro_traits(name) - local icons = { - [ "unknown" ] = { - icon = "", - color = "#f3be25", - }, - [ "debian" ] = { - icon = "", - color = "#d70a53", - }, - [ "gentoo" ] = { - icon = "", - color = "#54487A", - }, - [ "nixos" ] = { - icon = "", - color = "#5277C3", - }, - [ "\"opensuse-tumbleweed\"" ] = { - icon = "", - color = "#73ba25", - }, - } - - if os.getenv("CONTAINER_ID") ~= nil then - icons["distrobox"] = { - icon = "[󰏗 " .. os.getenv("CONTAINER_ID") .. "]", - color = "#917d62", - } - end - - local icon = icons[name] - if icon == nil then - icon = icons["unknown"] - end - - return icon -end - -return function() - if os.getenv("CONTAINER_ID") ~= nil then - return { - name = "distrobox", - traits = distro_traits("distrobox"), - } - end - - local release_file = io.open("/etc/os-release", "rb") - if release_file == nil then - return { - name = "unknown", - traits = distro_traits("unknown"), - } - end - - local content = vim.split(release_file:read("*a"), "\n") - local distro_id = nil - for _, line in ipairs(content) do - if string.sub(line, 0, 3) == "ID=" then - distro_id = string.sub(line, 4, -1) - goto distro_id_found - end - end - ::distro_id_found:: - - release_file:close() - - return { - name = distro_id, - traits = distro_traits(distro_id) - } -end - diff --git a/dotfiles/nvim/lua/util/hl.lua b/dotfiles/nvim/lua/util/hl.lua deleted file mode 100644 index d7c95c1..0000000 --- a/dotfiles/nvim/lua/util/hl.lua +++ /dev/null @@ -1,7 +0,0 @@ -return function (name) - local hl = vim.api.nvim_get_hl(0, { name = name }) - while hl.link ~= nil do - hl = vim.api.nvim_get_hl(0, { name = hl.link }) - end - return hl -end diff --git a/dotfiles/nvim/lua/util/map.lua b/dotfiles/nvim/lua/util/map.lua deleted file mode 100644 index 26d4468..0000000 --- a/dotfiles/nvim/lua/util/map.lua +++ /dev/null @@ -1,9 +0,0 @@ -return function(mode, key, mapping, comment) - local opts = { - noremap = true, - silent = true, - desc = comment - } - vim.keymap.set(mode, key, mapping, opts) -end - diff --git a/dotfiles/nvim/lua/util/require_dir.lua b/dotfiles/nvim/lua/util/require_dir.lua deleted file mode 100644 index 11b39af..0000000 --- a/dotfiles/nvim/lua/util/require_dir.lua +++ /dev/null @@ -1,27 +0,0 @@ -return function(dir, skip_init) - local returns = {} - local lua_files = vim.split(vim.fn.glob(dir.."/*.lua"), "\n") - local namespace = string.gsub(dir, vim.fn.stdpath("config").."/lua/", "") - namespace = string.gsub(namespace, "%/", ".") - - for _, file in ipairs(lua_files) do - file = string.gsub(file, "%.lua", "") - file = string.gsub(file, dir.."/", namespace) - - if skip_init and file == namespace.."init" then - goto continue - end - - local require_ok, require_return = pcall(require, file) - if require_ok then - table.insert(returns, require_return) - else - vim.notify("Could not require file: '"..file.."': "..require_return, vim.log.levels.WARNING) - end - - ::continue:: - end - - return returns -end - diff --git a/dotfiles/nvim/lua/util/rgb_to_hex.lua b/dotfiles/nvim/lua/util/rgb_to_hex.lua deleted file mode 100644 index 33bd99d..0000000 --- a/dotfiles/nvim/lua/util/rgb_to_hex.lua +++ /dev/null @@ -1,11 +0,0 @@ -return function(rgb) - if rgb == nil then - return nil - end - - local r = string.format("%02x", (rgb / 65536) % 256) - local g = string.format("%02x", (rgb / 256) % 256) - local b = string.format("%02x", rgb % 256) - - return "#"..r..g..b -end diff --git a/dotfiles/zsh/.zshrc b/dotfiles/zsh/.zshrc deleted file mode 100755 index d468434..0000000 --- a/dotfiles/zsh/.zshrc +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env zsh - -# Prefetch paths -source "$ZDOTDIR/conf.d/path.zsh" - -for file in $ZDOTDIR/conf.d/*; do - if [[ "$file" == *"path.zsh" ]]; then - continue - fi - source "$file" -done - diff --git a/dotfiles/zsh/conf.d/alias.zsh b/dotfiles/zsh/conf.d/alias.zsh deleted file mode 100644 index 5079bde..0000000 --- a/dotfiles/zsh/conf.d/alias.zsh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env zsh - -alias reload="exec zsh" - -if [ -x "$(command -v nix)" ]; then - alias nix-develop="nix develop -c $SHELL" -fi - diff --git a/dotfiles/zsh/conf.d/color.zsh b/dotfiles/zsh/conf.d/color.zsh deleted file mode 100755 index e1de862..0000000 --- a/dotfiles/zsh/conf.d/color.zsh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env zsh - -alias ls='ls --color=auto' -alias ll='ls -lah --color=auto' -alias grep='grep --color=auto' - -term_name=$(ps -o comm= "$PPID") -if [ "$term_name" = "xterm" ] && [ -n "$(command -v "transset")" ]; then - transset -a 0.95 > /dev/null -fi - diff --git a/dotfiles/zsh/conf.d/completions.zsh b/dotfiles/zsh/conf.d/completions.zsh deleted file mode 100755 index a367270..0000000 --- a/dotfiles/zsh/conf.d/completions.zsh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env zsh - -if [ -z "$FZF_TAB_PLUGIN" ]; then - if [ ! -d "$HOME/.cache/fzf-tab" ]; then - echo "Installing fzf-tab" - git clone "https://github.com/Aloxaf/fzf-tab" "$HOME/.cache/fzf-tab" - fi - FZF_TAB_PLUGIN="$HOME/.cache/fzf-tab/fzf-tab.plugin.zsh" -fi - -autoload -Uz compinit -compinit - -source "$FZF_TAB_PLUGIN" -zstyle ':completion:*:git-checkout:*' sort false - -if [ -n "$TMUX" ]; then - zstyle ':fzf-tab:*' fzf-command ftb-tmux-popup -fi - diff --git a/dotfiles/zsh/conf.d/distrobox.zsh b/dotfiles/zsh/conf.d/distrobox.zsh deleted file mode 100644 index 1f4e6e4..0000000 --- a/dotfiles/zsh/conf.d/distrobox.zsh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env zsh - -# TODO: Script to prompt which environment the user wants to enter in to diff --git a/dotfiles/zsh/conf.d/env.zsh b/dotfiles/zsh/conf.d/env.zsh deleted file mode 100755 index 5e7d8a7..0000000 --- a/dotfiles/zsh/conf.d/env.zsh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env zsh - -if [ -n "$(command -v qt5ct)" ] && [ -z "$DESKTOP_SESSION" ]; then - export QT_QPA_PLATFORMTHEME=qt5ct -fi - diff --git a/dotfiles/zsh/conf.d/fuck.zsh b/dotfiles/zsh/conf.d/fuck.zsh deleted file mode 100755 index de46864..0000000 --- a/dotfiles/zsh/conf.d/fuck.zsh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env zsh - -if [ -n "$(command -v thefuck)" ]; then - fuck() { - eval $(thefuck --alias) - fuck - } -fi - diff --git a/dotfiles/zsh/conf.d/gpg.zsh b/dotfiles/zsh/conf.d/gpg.zsh deleted file mode 100755 index a4bb94b..0000000 --- a/dotfiles/zsh/conf.d/gpg.zsh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env zsh - -GPG_TTY=$(tty) -export GPG_TTY - diff --git a/dotfiles/zsh/conf.d/manpager.zsh b/dotfiles/zsh/conf.d/manpager.zsh deleted file mode 100755 index ef34d2a..0000000 --- a/dotfiles/zsh/conf.d/manpager.zsh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env zsh - -if [ -n "$(command -v "nvim")" ]; then - export MANPAGER='nvim +Man!' - export EDITOR="nvim" -fi - diff --git a/dotfiles/zsh/conf.d/nix.zsh b/dotfiles/zsh/conf.d/nix.zsh deleted file mode 100644 index 8caaafc..0000000 --- a/dotfiles/zsh/conf.d/nix.zsh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env zsh - -# Nix specific zsh configuration -if [ -x "$(command -v nix)" ]; then - source "$NIX_SHELL_PLUGIN" - if [ -f "$HOME/.config/user-dirs.dirs" ]; then - source "$HOME/.config/user-dirs.dirs" - fi -fi - - diff --git a/dotfiles/zsh/conf.d/path.zsh b/dotfiles/zsh/conf.d/path.zsh deleted file mode 100755 index c418f2c..0000000 --- a/dotfiles/zsh/conf.d/path.zsh +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env zsh - -add_to_path() { - if [ -d "$1" ] && [[ "$PATH" != *"$1"* ]]; then - PATH="$PATH:$1" - fi -} - -add_to_path "$HOME/.local/bin" - -if [ -f "/etc/profile.d/nix.sh" ]; then - source /etc/profile.d/nix.sh -fi - -# Language package mangers -if [ -n "$(command -v go)" ]; then - export GOPATH="$HOME/.local/share/go" - add_to_path "$HOME/.local/share/go/bin" -fi - -if [ -n "$(command -v npm)" ]; then - if [ -f "$HOME/.npmrc" ]; then - if [ -z "$(grep prefix "$HOME/.npmrc")" ]; then - npm config set prefix "$HOME/.local/share/npm" - fi - else - npm config set prefix "$HOME/.local/share/npm" - fi - add_to_path "$HOME/.local/share/npm/bin" -fi - -if [ -n "$(command -v cargo)" ]; then - export CARGO_HOME="$HOME/.local/share/cargo" - add_to_path "$HOME/.local/share/cargo/bin" -fi - -if [ -n "$(command -v pip3)" ] && [ -n "$(command -v virtualenv)" ]; then - if [ ! -d "$HOME/.local/share/python3-venv" ]; then - python3 -m venv "$HOME/.local/share/python3-venv" - fi - - if [ "$(grep "executable" "$HOME/.local/share/python3-venv/pyvenv.cfg" | awk '{print $3}')" \ - != "$(realpath $(command -v python3))" ]; then - python3 -m venv --upgrade "$HOME/.local/share/python3-venv" - fi - - export VIRTUAL_ENV_DISABLE_PROMPT=true - source "$HOME/.local/share/python3-venv/bin/activate" -fi - diff --git a/dotfiles/zsh/conf.d/ps1.zsh b/dotfiles/zsh/conf.d/ps1.zsh deleted file mode 100755 index 1155fb2..0000000 --- a/dotfiles/zsh/conf.d/ps1.zsh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env zsh - -distro=$(cat /etc/os-release | grep -w 'ID=.*' | sed -e 's/ID=//g' | awk '{print $1}') -case "$distro" in - "debian") dicon="%F{red}%f" ;; - "gentoo") dicon="%F{magenta}%f" ;; - "\"opensuse-tumbleweed\"") dicon="%F{green} %f" ;; - "nixos") dicon="%F{cyan}%f" ;; - *) dicon="%F{yellow}[󰘧]%f" ;; -esac - -if [ -n "$IN_NIX_SHELL" ]; then - if [ -z "$NIX_SHELL_PACKAGES" ]; then - nix_shell_ps1=" %F{red}nix-shell%f" - else - nix_shell_ps1=" %F{red}{ $NIX_SHELL_PACKAGES }%f" - fi -else - nix_shell_ps1="" -fi - -if [ -n "$CONTAINER_ID" ]; then - dicon="%F{bg-yellow}[󰏗 $CONTAINER_ID]%f" -fi - -setopt prompt_subst -autoload -Uz vcs_info -precmd () { vcs_info } -zstyle ':vcs_info:*' formats ' %F{yellow}(%b)%f' - -NL=$'\n' -export PS1='[$dicon %F{green}%3~%f$vcs_info_msg_0_$nix_shell_ps1]# ' - diff --git a/dotfiles/zsh/conf.d/ssh.zsh b/dotfiles/zsh/conf.d/ssh.zsh deleted file mode 100755 index 7e2231f..0000000 --- a/dotfiles/zsh/conf.d/ssh.zsh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env zsh - -if [ -z "$DESKTOP_SESSION" ]; then - if [ -n "$(command -v gnome-keyring-daemon)" ]; then - if [ -z "$(pidof gnome-keyring-daemon)" ]; then - eval $(gnome-keyring-daemon --start) - export SSH_AUTH_SOCK - fi - else - { eval $(ssh-agent -s); } > /dev/null 2>&1 - fi -fi - diff --git a/dotfiles/zsh/conf.d/suggestions.zsh b/dotfiles/zsh/conf.d/suggestions.zsh deleted file mode 100755 index 1325a7b..0000000 --- a/dotfiles/zsh/conf.d/suggestions.zsh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env zsh - -export HISTFILE=~/.cache/zsh_history -export HISTSIZE=10000 -export SAVEHIST=$HISTSIZE - -setopt INC_APPEND_HISTORY -setopt SHARE_HISTORY -setopt HIST_IGNORE_SPACE -setopt HIST_SAVE_NO_DUPS - -if [ -z "$AUTOSUGGEST_PLUGIN" ]; then - import_file="/usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh" -else - import_file="$AUTOSUGGEST_PLUGIN" -fi - -if [ ! -f "$import_file" ]; then - if [ ! -d "$HOME/.cache/zsh-autosuggestions" ]; then - echo "Installing zsh-autosuggestions..." - git clone "https://github.com/zsh-users/zsh-autosuggestions.git" "$HOME/.cache/zsh-autosuggestions" - fi - import_file="$HOME/.cache/zsh-autosuggestions/zsh-autosuggestions.zsh" -fi - -source "$import_file" - -ZSH_AUTOSUGGEST_STRATEGY=(history completion) - diff --git a/dotfiles/zsh/conf.d/syntax.zsh b/dotfiles/zsh/conf.d/syntax.zsh deleted file mode 100755 index 752aec3..0000000 --- a/dotfiles/zsh/conf.d/syntax.zsh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env zsh - -if [ -z "$SYNTAX_PLUGIN" ]; then - import_file="/usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" -else - import_file="$SYNTAX_PLUGIN" -fi - -if [ ! -f "$import_file" ]; then - if [ ! -d "$HOME/.cache/zsh-syntax-highlighting" ]; then - echo "Installing zsh-syntax-highlighting..." - git clone "https://github.com/zsh-users/zsh-syntax-highlighting.git" "$HOME/.cache/zsh-syntax-highlighting" - fi - import_file="$HOME/.cache/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" -fi - -source "$import_file" - diff --git a/flake.lock b/flake.lock index c353b96..2cedd24 100644 --- a/flake.lock +++ b/flake.lock @@ -1,39 +1,41 @@ { "nodes": { - "aagl": { + "disko": { "inputs": { - "flake-compat": "flake-compat", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1734540176, - "narHash": "sha256-msxbnOw/nh8GJ87YtBEDT1jhVldOBtxHRF2KgvYPeDA=", - "owner": "ezKEa", - "repo": "aagl-gtk-on-nix", - "rev": "00df3ad02364a6fb8f1105dc72ae770b748c62eb", + "lastModified": 1734088167, + "narHash": "sha256-snPBgTqwn3FPZVdFC5yt7Bnk3squim1vZOZ8CObWykk=", + "owner": "nix-community", + "repo": "disko", + "rev": "65a441502c9382d41ada1adbc9bd31d6c9b00fe2", "type": "github" }, "original": { - "owner": "ezKEa", - "repo": "aagl-gtk-on-nix", + "owner": "nix-community", + "ref": "latest", + "repo": "disko", "type": "github" } }, - "flake-compat": { - "flake": false, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "lastModified": 1736143030, + "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, @@ -44,15 +46,16 @@ ] }, "locked": { - "lastModified": 1736204492, - "narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=", + "lastModified": 1735344290, + "narHash": "sha256-oJDtWPH1oJT34RJK1FSWjwX4qcGOBRkcNQPD0EbSfNM=", "owner": "nix-community", "repo": "home-manager", - "rev": "20665c6efa83d71020c8730f26706258ba5c6b2a", + "rev": "613691f285dad87694c2ba1c9e6298d04736292d", "type": "github" }, "original": { "owner": "nix-community", + "ref": "release-24.11", "repo": "home-manager", "type": "github" } @@ -88,36 +91,42 @@ "type": "github" } }, - "plasma-manager": { - "inputs": { - "home-manager": [ - "home-manager" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, + "nixpkgs-lib": { "locked": { - "lastModified": 1735049224, - "narHash": "sha256-fWUd9kyXdepphJ7cCzOsuSo7l0kbFCkUqfgKqZyFZzE=", - "owner": "nix-community", - "repo": "plasma-manager", - "rev": "d16bbded0ae452bc088489e7dca3ef58d8d1830b", + "lastModified": 1735774519, + "narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1736012469, + "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "plasma-manager", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, "root": { "inputs": { - "aagl": "aagl", + "disko": "disko", + "flake-parts": "flake-parts", "home-manager": "home-manager", "impermanence": "impermanence", "nixpkgs": "nixpkgs", - "plasma-manager": "plasma-manager" + "nixpkgs-unstable": "nixpkgs-unstable" } } }, diff --git a/flake.nix b/flake.nix index 2bcbf6e..fa406a7 100644 --- a/flake.nix +++ b/flake.nix @@ -1,32 +1,32 @@ { + description = "My NixOS configuration files."; + inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + + flake-parts.url = "github:hercules-ci/flake-parts"; + + home-manager = { + url = "github:nix-community/home-manager/release-24.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; impermanence.url = "github:nix-community/impermanence"; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - plasma-manager = { - url = "github:nix-community/plasma-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.home-manager.follows = "home-manager"; - }; - - aagl = { - url = "github:ezKEa/aagl-gtk-on-nix"; + disko = { + url = "github:nix-community/disko/latest"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { nixpkgs, + nixpkgs-unstable, + flake-parts, impermanence, home-manager, - plasma-manager, - aagl, + disko, ... } @ inputs: let lib = nixpkgs.lib.extend (final: prev: @@ -34,16 +34,11 @@ ); in { nixosConfigurations = lib.mkHosts { - modules = [ - home-manager.nixosModules.home-manager { - home-manager.sharedModules = [ - plasma-manager.homeManagerModules.plasma-manager - ]; - } - impermanence.nixosModules.impermanence - ]; nixpkgs = nixpkgs; inputs = inputs; + modules = [ + disko.nixosModules.disko + ]; }; }; } diff --git a/home/default.nix b/home/default.nix deleted file mode 100644 index 30ba60d..0000000 --- a/home/default.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ config, ... }: - -{ - users.users.hu = { - isNormalUser = true; - extraGroups = [ "wheel" ]; - hashedPasswordFile = "/nix/config/secrets/pass"; - }; - - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - users.hu = { - home.username = "hu"; - home.homeDirectory = "/home/hu"; - home.stateVersion = config.system.stateVersion; - - xdg = { - enable = true; - userDirs = { - documents = "/home/hu/documents"; - download = "/home/hu/download"; - music = "/home/hu/music"; - pictures = "/home/hu/images"; - videos = "/home/hu/videos"; - - # I will never need this so they're getting hidden - publicShare = "/home/hu/.local/share/xdg/public"; - templates = "/home/hu/.local/share/xdg/templates"; - }; - }; - }; - }; - - imports = [ - ./persist.nix - ]; -} - diff --git a/home/persist.nix b/home/persist.nix deleted file mode 100644 index 68a3a2a..0000000 --- a/home/persist.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ ... }: - -{ - environment.persistence."/nix/persist".users.hu = { - directories = [ - "archives" - "documents" - "programming" - "source" - "games" - "images" - "videos" - - # Program files - { directory = ".gnupg"; mode = "0700"; } - { directory = ".ssh"; mode = "0700"; } - { directory = ".nixops"; mode = "0700"; } - { directory = ".local/share/keyrings"; mode = "0700"; } - { directory = ".pki"; mode = "0700"; } - ".local/share/direnv" - ]; - }; -} - diff --git a/hosts/puter/default.nix b/hosts/puter/default.nix new file mode 100644 index 0000000..d57604c --- /dev/null +++ b/hosts/puter/default.nix @@ -0,0 +1,97 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ./persist.nix + ./disko.nix + ./packages.nix + ]; + + time.timeZone = "Europe/Berlin"; + + networking = { + hostName = "puter"; + useDHCP = true; + }; + + hardware.cpu.amd.updateMicrocode = true; + + services = { + fstrim.enable = true; + btrfs.autoScrub.enable = true; + fwupd.enable = true; + }; + + boot = { + loader = { + canTouchEfiVariables = true; + grub = { + enable = true; + efiSupport = true; + gfxmodeEfi = "1920x1080"; + }; + }; + + tmp.useTmpfs = true; + kernelPackages = pkgs.linuxPackages_xanmod_latest; + supportedFilesystems = [ "btfs" "vfat" "xfs" ]; + kernelModules = [ "kvm-amd" ]; + extraModprobeConfig = "options kvm_amd nested=1"; + initrd = { + availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + postDeviceCommands = lib.mkAfter '' + mkdir /btrfs_tmp + mount ${config.fileSystems."/".device} /btrfs_tmp + if [[ -e /btrfs_tmp/root ]]; then + mkdir -p /btrfs_tmp/old_roots + timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") + mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" + fi + + delete_subvolume_recursively() { + IFS=$'\n' + for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do + delete_subvolume_recursively "/btrfs_tmp/$i" + done + btrfs subvolume delete "$1" + } + + for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do + delete_subvolume_recursively "$i" + done + + btrfs subvolume create /btrfs_tmp/root + umount /btrfs_tmp + ''; + }; + }; + + fileSystems = { + # These are system specific. If you have any additional drives that are not + # your root device you can add and mount them here. Added nofail so that you can + # install this configuration on a device without it exploding when you don't have + # these specific partitions. + + "/mnt/vault" = { + device = "/dev/disk/by-uuid/048d175b-0e3e-4ec7-955b-3d9a45f9f237"; + options = [ "nofail" ]; + fsType = "xfs"; + }; + + "/mnt/attic" = { + device = "/dev/disk/by-uuid/ec32ce36-9f53-4f44-ac8f-2c9163f0b3d7"; + options = [ "nofail" ]; + fsType = "xfs"; + }; + }; + + nixpkgs = { + config = { + allowUnfree = true; + }; + hostPlatform = lib.mkDefault "x86_64-linux"; + }; + + system.stateVersion = "24.11"; # [managed by install.sh] { state version } +} + diff --git a/hosts/puter/disko.nix b/hosts/puter/disko.nix new file mode 100644 index 0000000..e6b3f5e --- /dev/null +++ b/hosts/puter/disko.nix @@ -0,0 +1,62 @@ +{ ... }: + +{ + disko.devices = { + master = { + type = "disk"; + device = ""; # [managed by install.sh] { device } + content = { + type = "gpt"; + partitions = { + ESP = { + priority = 1; + name = "efi"; + start = "1M"; + end = "1024M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "umask=0077" + "noatime" + ]; + }; + }; + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" "-L nixos" ]; + postCreateHook = '' + TMP_MNT=$(mktemp -d) + MNT_PART="" # [managed by install.sh] { root partition } + mount "$MNT_PART" "$TMP_MNT" -o subvol=/ + trap 'umount "$TMP_MNT"; rm -rf "$TMP_MNT"' EXIT + btrfs subvolume snapshot "$TMP_MNT/root" "$TMP_MNT/blank" + ''; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ + "noatime" + "compress=zstd" + ]; + }; + + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ + "noatime" + "compress=zstd" + ]; + }; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/hosts/puter/packages.nix b/hosts/puter/packages.nix new file mode 100644 index 0000000..d1c2283 --- /dev/null +++ b/hosts/puter/packages.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + imports = let + modules = ../../modules/nixos; + in [ + "${modules}/hardware/nvidia" + "${modules}/hardware/audio" + ]; +} + diff --git a/hosts/puter/persist.nix b/hosts/puter/persist.nix new file mode 100644 index 0000000..e69de29 diff --git a/hosts/workstation/default.nix b/hosts/workstation/default.nix deleted file mode 100644 index 6196d91..0000000 --- a/hosts/workstation/default.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ config, pkgs, ... }: - -{ - imports = [ - ./hardware-configuration.nix - ./persist.nix - ../../home/default.nix - - ../../modules/desktop/environments/kde.nix - ../../modules/system/basic.nix - ../../modules/system/security.nix - ../../modules/desktop/apps/communication.nix - ../../modules/desktop/apps/games.nix - ../../modules/desktop/apps/multimedia.nix - ../../modules/system/virtualisation.nix - ../../modules/system/development.nix - ../../modules/packages/firefox.nix - ../../modules/packages/zsh.nix - ../../modules/packages/fastfetch.nix - ../../modules/packages/tmux.nix - ]; - - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.grub = { - enable = true; - efiSupport = true; - device = "nodev"; - gfxmodeEfi = "1920x1080"; - }; - boot.kernelPackages = pkgs.linuxPackages_xanmod_latest; - boot.supportedFilesystems = [ "btrfs" "xfs" ]; - - networking = { - hostName = "workstation"; - enableIPv6 = false; - }; - - time.timeZone = "Europe/Berlin"; - - i18n.defaultLocale = "en_US.UTF-8"; - console = { - font = "Lat2-Terminus16"; - keyMap = "uk"; - # useXkbConfig = true; - }; - - nixpkgs.config.allowUnfree = true; - services.xserver.videoDrivers = [ "nvidia" ]; - hardware = { - graphics = { - enable = true; - enable32Bit = true; - }; - nvidia = { - modesetting.enable = true; - open = true; - package = config.boot.kernelPackages.nvidiaPackages.beta; - }; - }; - - programs.mtr.enable = true; - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa = { - enable = true; - support32Bit = true; - }; - pulse.enable = true; - jack.enable = true; - }; - - nix = { - settings = { - substituters = [ - "https://cuda-maintainers.cachix.org" - ]; - trusted-public-keys = [ - "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" - ]; - }; - extraOptions = '' - experimental-features = nix-command flakes - ''; - }; - - # nixpkgs.config.cudaSupport = true; - - system.stateVersion = "23.11"; -} - diff --git a/hosts/workstation/hardware-configuration.nix b/hosts/workstation/hardware-configuration.nix deleted file mode 100644 index b2d0307..0000000 --- a/hosts/workstation/hardware-configuration.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ config, lib, modulesPath, ... }: - -{ - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/5cc0482e-ac92-41c7-b2fc-2d9b4a19eeec"; - fsType = "btrfs"; - options = [ "subvol=root" "compress=zstd" "noatime" ]; - }; - - fileSystems."/nix" = { - device = "/dev/disk/by-uuid/5cc0482e-ac92-41c7-b2fc-2d9b4a19eeec"; - fsType = "btrfs"; - options = [ "subvol=nix" "compress=zstd" "noatime" ]; - neededForBoot = true; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/3012-B13E"; - fsType = "vfat"; - }; - - fileSystems."/home/hu/mounts/vault" = { - device = "/dev/disk/by-uuid/048d175b-0e3e-4ec7-955b-3d9a45f9f237"; - fsType = "xfs"; - }; - - fileSystems."/home/hu/mounts/attic" = { - device = "/dev/disk/by-uuid/ec32ce36-9f53-4f44-ac8f-2c9163f0b3d7"; - fsType = "xfs"; - }; - - boot.initrd.availableKernelModules = [ - "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" - ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; - boot.extraModprobeConfig = "options kvm_amd nested=1"; - boot.kernelParams = [ - "nvidia_drm.fbdev=1" - "nvidia.NVreg_PreserveVideoMemoryAllocations=1" - ]; - - boot.initrd.postDeviceCommands = lib.mkAfter '' - mkdir /btrfs_tmp - mount ${config.fileSystems."/".device} /btrfs_tmp - if [[ -e /btrfs_tmp/root ]]; then - mkdir -p /btrfs_tmp/old_roots - timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") - mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" - fi - - delete_subvolume_recursively() { - IFS=$'\n' - for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do - delete_subvolume_recursively "/btrfs_tmp/$i" - done - btrfs subvolume delete "$1" - } - - for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do - delete_subvolume_recursively "$i" - done - - btrfs subvolume create /btrfs_tmp/root - umount /btrfs_tmp - ''; - - networking.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} - diff --git a/hosts/workstation/persist.nix b/hosts/workstation/persist.nix deleted file mode 100644 index 5af2054..0000000 --- a/hosts/workstation/persist.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ ... }: - -{ - environment.persistence."/nix/persist" = { - hideMounts = true; - directories = [ - "/var/log" - "/var/lib/nixos" - "/var/lib/systemd/coredump" - { - directory = "/var/lib/colord"; - user = "colord"; - group = "colord"; - mode = "u=rwx,g=rx,o="; - } - "/etc/NetworkManager/system-connections" - ]; - files = [ - "/etc/machine-id" - ]; - }; -} - diff --git a/hosts/x220/default.nix b/hosts/x220/default.nix deleted file mode 100644 index 5030445..0000000 --- a/hosts/x220/default.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ pkgs, ... }: - -{ - imports = [ - ./hardware-configuration.nix - ./persist.nix - ../../home/default.nix - - ../../modules/desktop/environments/river.nix - ../../modules/system/basic.nix - ../../modules/system/security.nix - ../../modules/desktop/apps/communication.nix - ../../modules/desktop/apps/multimedia.nix - ../../modules/system/development.nix - ../../modules/packages/firefox.nix - ../../modules/packages/zsh.nix - ../../modules/packages/fastfetch.nix - ../../modules/packages/tmux.nix - ]; - - hardware.bluetooth.enable = true; - - boot = { - loader.grub = { - enable = true; - device = "/dev/sda"; - gfxmodeEfi = "1366x768"; - }; - kernelPackages = pkgs.linuxPackages_xanmod_latest; - supportedFilesystems = [ "btrfs" ]; - }; - - networking = { - hostName = "x220"; - networkmanager.enable = true; - }; - - users.users.hu.extraGroups = [ "networkmanager" ]; - - time.timeZone = "Europe/Berlin"; - - i18n.defaultLocale = "en_US.UTF-8"; - console = { - font = "Lat2-Terminus16"; - keyMap = "de"; - # useXkbConfig = true; - }; - - nixpkgs.config.allowUnfree = true; - - programs.mtr.enable = true; - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa = { - enable = true; - support32Bit = true; - }; - pulse.enable = true; - jack.enable = true; - }; - - services.tlp.enable = true; - - nix = { - extraOptions = '' - experimental-features = nix-command flakes - ''; - }; - - system.stateVersion = "24.05"; -} - diff --git a/hosts/x220/hardware-configuration.nix b/hosts/x220/hardware-configuration.nix deleted file mode 100644 index 789fd90..0000000 --- a/hosts/x220/hardware-configuration.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ config, lib, modulesPath, ... }: - -{ - imports = [ - (modulesPath + "/installer/scan/not-detected.nix") - ]; - - fileSystems."/" = { - device = "/dev/disk/by-uuid/e0b531cf-b575-4579-b866-9b7265e01b0a"; - fsType = "btrfs"; - options = [ "subvol=root" "compress=zstd" "noatime" "ssd" ]; - }; - - fileSystems."/nix" = { - device = "/dev/disk/by-uuid/e0b531cf-b575-4579-b866-9b7265e01b0a"; - fsType = "btrfs"; - options = [ "subvol=nix" "compress=zstd" "noatime" "ssd" ]; - neededForBoot = true; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/bfe6e556-44e9-427f-9ae6-eddae6c62298"; - fsType = "ext4"; - }; - - boot.initrd.luks.devices."vg".device = "/dev/disk/by-uuid/92b4f484-2c00-47e7-baf6-9f396883e231"; - boot.initrd.availableKernelModules = [ - "ehci_pci" "ahci" "xhci_pci" "usb_storage" "sd_mod" "sdhci_pci" - ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.initrd.postDeviceCommands = lib.mkAfter '' - mkdir /btrfs_tmp - mount ${config.fileSystems."/".device} /btrfs_tmp - if [[ -e /btrfs_tmp/root ]]; then - mkdir -p /btrfs_tmp/old_roots - timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") - mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" - fi - - delete_subvolume_recursively() { - IFS=$'\n' - for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do - delete_subvolume_recursively "/btrfs_tmp/$i" - done - btrfs subvolume delete "$1" - } - - for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do - delete_subvolume_recursively "$i" - done - - btrfs subvolume create /btrfs_tmp/root - umount /btrfs_tmp - ''; - - networking.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} - diff --git a/hosts/x220/persist.nix b/hosts/x220/persist.nix deleted file mode 100644 index 5af2054..0000000 --- a/hosts/x220/persist.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ ... }: - -{ - environment.persistence."/nix/persist" = { - hideMounts = true; - directories = [ - "/var/log" - "/var/lib/nixos" - "/var/lib/systemd/coredump" - { - directory = "/var/lib/colord"; - user = "colord"; - group = "colord"; - mode = "u=rwx,g=rx,o="; - } - "/etc/NetworkManager/system-connections" - ]; - files = [ - "/etc/machine-id" - ]; - }; -} - diff --git a/lib/default.nix b/lib/default.nix index c62cc11..89a0986 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,7 +1,5 @@ { lib }: -# todo: Write a function to import all of these automatically - let fs = import ./fs.nix { inherit lib; }; hosts = import ./hosts.nix { inherit lib; }; diff --git a/lib/hosts.nix b/lib/hosts.nix index f94a590..0f367cb 100644 --- a/lib/hosts.nix +++ b/lib/hosts.nix @@ -2,9 +2,9 @@ { mkHosts = { - modules, nixpkgs, inputs, + modules, }: builtins.listToAttrs (builtins.map (host: { name = host; value = nixpkgs.lib.nixosSystem { diff --git a/modules/desktop/apps/communication.nix b/modules/desktop/apps/communication.nix deleted file mode 100644 index fe72f8a..0000000 --- a/modules/desktop/apps/communication.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, ... }: - -{ - environment.persistence."/nix/persist".users.hu.directories = [ - ".config/Signal" - ".config/vesktop" - ".config/tutanota-desktop" - ".config/tuta_integration" - ".config/Element" - ]; - - environment.systemPackages = with pkgs; [ - tutanota-desktop - signal-desktop - element-desktop - vesktop - ]; -} - diff --git a/modules/desktop/apps/games.nix b/modules/desktop/apps/games.nix deleted file mode 100644 index f380665..0000000 --- a/modules/desktop/apps/games.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ pkgs, inputs, ... }: - -{ - environment.persistence."/nix/persist".users.hu.directories = [ - ".steam" - ".local/share/Steam" - ".local/share/honkers-railway-launcher" - ".local/share/anime-game-launcher" - ".local/share/PrismLauncher" - ".xlcore" - ".local/share/Euro Truck Simulator 2" - ".local/share/osu" - ".local/share/Colossal Order" - ]; - - programs.steam = { - enable = true; - remotePlay.openFirewall = false; - dedicatedServer.openFirewall = true; - gamescopeSession.enable = true; - }; - - environment.systemPackages = with pkgs; [ - prismlauncher - protonup-qt - osu-lazer-bin - protontricks - ]; - - imports = [ inputs.aagl.nixosModules.default ]; - nix.settings = inputs.aagl.nixConfig; - - programs.anime-game-launcher.enable = true; -} - diff --git a/modules/desktop/apps/multimedia.nix b/modules/desktop/apps/multimedia.nix deleted file mode 100644 index c11ca5e..0000000 --- a/modules/desktop/apps/multimedia.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ pkgs, ... }: - -{ - environment.persistence."/nix/persist".users.hu.directories = [ - ".config/OpenTabletDriver" - ".config/tidal-hifi" - ]; - - environment.systemPackages = with pkgs; [ - mpv - imagemagick - ffmpeg-full - yt-dlp - (pkgs.symlinkJoin { - name = "flowblade"; - paths = [ pkgs.flowblade ]; - buildInputs = [ pkgs.makeWrapper ]; - postBuild = '' - rm "$out/bin/flowblade" - echo "#!/bin/sh" > "$out/bin/flowblade" - echo "SDL12COMPAT_NO_QUIT_VIDEO=1 \ - GDK_BACKEND=x11 \ - SDL_VIDEODRIVER=x11 \ - ${pkgs.flowblade}/bin/flowblade" >> "$out/bin/flowblade" - chmod 555 "$out/bin/flowblade" - ''; - }) - gimp - inkscape - krita - tidal-hifi - blender - obs-studio - ]; - - # hardware.opentabletdriver = { - # enable = true; - # daemon.enable = true; - # }; -} - diff --git a/modules/desktop/environments/hyprland.nix b/modules/desktop/environments/hyprland.nix deleted file mode 100644 index 459958c..0000000 --- a/modules/desktop/environments/hyprland.nix +++ /dev/null @@ -1,218 +0,0 @@ -{ pkgs, ...}: - -{ - imports = [ - ../../system/fonts.nix - ../../packages/waybar.nix - ../../packages/rofi.nix - ../../packages/foot.nix - ]; - - environment.systemPackages = with pkgs; [ - hyprpaper - rofi-wayland - foot - wl-clipboard - nautilus - pavucontrol - nvidia-vaapi-driver - ]; - - environment.sessionVariables = { - LIBVA_DRIVER_NAME = "nvidia"; - XDG_SESSION_TYPE = "wayland"; - GBM_BACKEND = "nvidia-drm"; - __GLX_VENDOR_LIBRARY_NAME = "nvidia"; - NVD_BACKEND = "direct"; - MOZ_DISABLE_RDD_SANDBOX = 1; - NIXOS_OZONE_WL = 1; - }; - - programs.hyprland = { - enable = true; - }; - - services.gnome.gnome-keyring.enable = true; - security.pam.services.greetd.enableGnomeKeyring = true; - - systemd.services.greetd.serviceConfig = { - Type = "idle"; - StandardInput = "tty"; - StandardOutput = "tty"; - StandardError = "journal"; - TTYReset = true; - TTYHangup = true; - TTYVTDisallocate = true; - }; - - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --asterisks --cmd hyprland"; - user = "greeter"; - }; - }; - }; - - xdg.portal = { - enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-gtk - ]; - }; - - home-manager.users.hu = { - home.pointerCursor = { - gtk.enable = true; - name = "Bibata-Modern-Classic"; - package = pkgs.bibata-cursors; - size = 24; - }; - - dconf.settings = { - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - }; - }; - - gtk = { - enable = true; - theme = { - name = "adw-gtk3-dark"; - package = pkgs.adw-gtk3; - }; - - iconTheme = { - name = "Adwaita"; - package = pkgs.adwaita-icon-theme; - }; - }; - - qt = { - enable = true; - platformTheme.name = "adwaita"; - style = { - name = "adwaita-dark"; - package = pkgs.adwaita-qt; - }; - }; - - services.hyprpaper = { - enable = true; - settings = { - ipc = "on"; - splash = false; - preload = [ - "/nix/config/assets/wallpapers/hyprland.jpg" - ]; - wallpaper = [ - ",/nix/config/wallpapers/hyprland.jpg" - ]; - }; - }; - - wayland.windowManager.hyprland = { - enable = true; - systemd = { - enable = true; - variables = [ "--all" ]; - }; - - settings = { - "$mod" = "SUPER"; - "$terminal" = "foot"; - "$menu" = "rofi -show drun"; - - monitor = "DP-1,1920x1080@144,auto,1"; - - cursor = { - no_hardware_cursors = true; - }; - - render = { - explicit_sync = 0; - }; - - input = { - kb_layout = "gb:intl"; - follow_mouse = 1; - }; - - general = { - gaps_in = 3; - gaps_out = 6; - border_size = 2; - layout = "master"; - allow_tearing = true; - "col.inactive_border" = "rgb(242424)"; - "col.active_border" = "rgb(3584E4)"; - }; - - master = { - mfact = 0.5; - }; - - decoration = { - rounding = 5; - blur = { - enabled = true; - size = 4; - passes = 1; - }; - }; - - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; - - bind = [ - "$mod, P, exec, $menu" - "$mod, RETURN, exec, $terminal" - ", Scroll_Lock, exec, pavucontrol" - "$mod, f, exec, nautilus" - - ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-" - ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+" - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", Pause, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" - - "$mod SHIFT, C, killactive" - "$mod, SPACE, togglefloating" - "$mod SHIFT, M, exit," - - "$mod SHIFT, RETURN, layoutmsg, swapwithmaster" - "$mod SHIFT, h, layoutmsg, mfact -0.05" - "$mod SHIFT, l, layoutmsg, mfact +0.05" - - "$mod, h, movefocus, l" - "$mod, j, movefocus, d" - "$mod, k, movefocus, u" - "$mod, l, movefocus, r" - - "$mod, 1, workspace, 1" - "$mod, 2, workspace, 2" - "$mod, 3, workspace, 3" - "$mod, 4, workspace, 4" - "$mod, 5, workspace, 5" - "$mod, 6, workspace, 6" - "$mod, 7, workspace, 7" - "$mod, 8, workspace, 8" - "$mod, 9, workspace, 9" - - "$mod SHIFT, 1, movetoworkspace, 1" - "$mod SHIFT, 2, movetoworkspace, 2" - "$mod SHIFT, 3, movetoworkspace, 3" - "$mod SHIFT, 4, movetoworkspace, 4" - "$mod SHIFT, 5, movetoworkspace, 5" - "$mod SHIFT, 6, movetoworkspace, 6" - "$mod SHIFT, 7, movetoworkspace, 7" - "$mod SHIFT, 8, movetoworkspace, 8" - "$mod SHIFT, 9, movetoworkspace, 9" - ]; - }; - }; - }; -} - diff --git a/modules/desktop/environments/kde.nix b/modules/desktop/environments/kde.nix deleted file mode 100644 index ea7bd62..0000000 --- a/modules/desktop/environments/kde.nix +++ /dev/null @@ -1,209 +0,0 @@ -{ pkgs, ... }: - -let - sddm-background-drv = pkgs.stdenvNoCC.mkDerivation { - name = "sddm-background-drv"; - src = ../../../assets/wallpapers; - dontUnpack = true; - installPhase = '' - cp $src/kde.png $out - ''; - }; -in { - imports = [ - ../../system/fonts.nix - ]; - - environment.persistence."/nix/persist".directories = [ - "/var/lib/AccountsService/" - ]; - - environment.persistence."/nix/persist".users.hu.directories = [ - ".local/share/kwalletd" - ".local/share/baloo" - ".local/share/dolphin" - ]; - - environment.persistence."/nix/persist".users.hu.files = [ - ".config/kwinoutputconfig.json" # https://github.com/nix-community/plasma-manager/issues/172 - ".local/state/konsolestaterc" - ]; - - networking.networkmanager.enable = true; - users.users.hu.extraGroups = [ "networkmanager" ]; - - environment.sessionVariables = { - LIBVA_DRIVER_NAME = "nvidia"; - XDG_SESSION_TYPE = "wayland"; - GBM_BACKEND = "nvidia-drm"; - __GLX_VENDOR_LIBRARY_NAME = "nvidia"; - NVD_BACKEND = "direct"; - NIXOS_OZONE_WL = 1; - }; - - services.desktopManager.plasma6.enable = true; - services.displayManager.sddm = { - enable = true; - wayland.enable = true; - }; - - environment.plasma6.excludePackages = with pkgs.kdePackages; [ - plasma-browser-integration - khelpcenter - krdp - ]; - - environment.systemPackages = with pkgs; [ - nvidia-vaapi-driver - kdePackages.sddm-kcm - (pkgs.writeTextDir "share/sddm/themes/breeze/theme.conf.user" '' - [General] - background=${sddm-background-drv} - '') - networkmanager-openvpn - wl-clipboard - ]; - - home-manager.users.hu = { - dconf.settings = { - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - }; - }; - - gtk = { - gtk2.configLocation = "/home/hu/.config/gtk-2.0/gtkrc"; - enable = true; - theme = { - name = "Breeze"; - package = pkgs.kdePackages.breeze-gtk; - }; - }; - - programs.konsole = { - enable = true; - defaultProfile = "custom"; - customColorSchemes = { - "custom" = ../../packages/konsole/custom.colorscheme; - }; - profiles = { - custom = { - name = "custom"; - colorScheme = "custom"; - font = { - name = "Go Mono Nerd Font"; - size = 12; - }; - }; - }; - }; - - programs.plasma = { - enable = true; - workspace = { - lookAndFeel = "org.kde.breezedark.desktop"; - wallpaper = "/nix/config/assets/wallpapers/kde.png"; - }; - - panels = [ - { - location = "left"; - floating = true; - widgets = [ - { - kickoff = { - icon = "nix-snowflake-white"; - }; - } - { - iconTasks = { - launchers = [ - "applications:org.kde.dolphin.desktop" - "applications:org.kde.konsole.desktop" - "applications:firefox-esr.desktop" - ]; - }; - } - "org.kde.plasma.marginsseparator" - { - systemTray = { - icons = { - spacing = "small"; - }; - }; - } - { - digitalClock = { - calendar.firstDayOfWeek = "monday"; - time.format = "24h"; - date.enable = false; - }; - } - "org.kde.plasma.pager" - ]; - } - ]; - - powerdevil = { - AC = { - autoSuspend.action = "nothing"; - dimDisplay.enable = false; - powerButtonAction = "hibernate"; - }; - }; - - shortcuts = { - kwin = { - "Switch to Desktop 1" = "Meta+1"; - "Switch to Desktop 2" = "Meta+2"; - "Switch to Desktop 3" = "Meta+3"; - "Switch to Desktop 4" = "Meta+4"; - "Switch to Desktop 5" = "Meta+5"; - "Switch to Desktop 6" = "Meta+6"; - "Switch to Desktop 7" = "Meta+7"; - "Switch to Desktop 8" = "Meta+8"; - "Switch to Desktop 9" = "Meta+9"; - - # Don't blame me for this. This is all the doing of kwin. - # You're going to have to adjust this to your layout. - "Window to Desktop 1" = "Meta+!"; - "Window to Desktop 2" = "Meta+\""; - "Window to Desktop 3" = "Meta+£"; - "Window to Desktop 4" = "Meta+$"; - "Window to Desktop 5" = "Meta+%"; - "Window to Desktop 6" = "Meta+^"; - "Window to Desktop 7" = "Meta+&"; - "Window to Desktop 8" = "Meta+*"; - "Window to Desktop 9" = "Meta+("; - }; - }; - - configFile = { - kwinrc = { - Desktops = { - Number = { - value = 9; - }; - Rows = { - value = 3; - }; - }; - }; - - plasmaashellrc = { - PlasmaViews = { - panelOpacity = 2; - }; - }; - - kxkbrc = { - Layout = { - LayoutList = "gb"; - Use = true; - }; - }; - }; - }; - }; -} - diff --git a/modules/desktop/environments/river.nix b/modules/desktop/environments/river.nix deleted file mode 100644 index 2b2cd8c..0000000 --- a/modules/desktop/environments/river.nix +++ /dev/null @@ -1,305 +0,0 @@ -{ pkgs, ...}: - -{ - imports = [ - ../../system/fonts.nix - ../../packages/foot.nix - ]; - - nixpkgs.overlays = [ - (final: prev: { - sandbar = prev.sandbar.overrideAttrs (old: { - src = prev.fetchFromGitHub { - owner = "kolunmi"; - repo = "sandbar"; - rev = "e64a8b788d086cdf4ec44b51e62bdc7b6b5f8165"; - hash = "sha256-dNYYlm5CEdnvLjskrPJgquptIQpYgU+gxOu+bt+7sbw="; - }; - }); - }) - ]; - - environment.systemPackages = with pkgs; [ - foot # to be replaced with ghostty - wl-clipboard - sandbar - pamixer - pavucontrol - tofi - swaybg - fnott - slurp - wf-recorder - grim - libnotify - seahorse - ]; - - environment.sessionVariables = { - NIXOS_OZONE_WL = 1; - }; - - programs.river.enable = true; - - services.gnome.gnome-keyring.enable = true; - security.pam.services.greetd.enableGnomeKeyring = true; - - systemd.services.greetd.serviceConfig = { - Type = "idle"; - StandardInput = "tty"; - StandardOutput = "tty"; - StandardError = "journal"; - TTYReset = true; - TTYHangup = true; - TTYVTDisallocate = true; - }; - - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --asterisks --cmd river"; - user = "greeter"; - }; - }; - }; - - xdg.portal = { - enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-gtk - ]; - }; - - home-manager.users.hu = { - home.file."/home/hu/.config/tofi/config" = { - text = '' - width = 100% - height = 100% - border-width = 0 - outline-width = 0 - padding-left = 35% - padding-top = 35% - result-spacing = 25 - num-results = 5 - font = Go Mono Nerd Font - background-color = #000A - ''; - }; - - home.file."/home/hu/.config/river/bar" = { - text = '' - #!/usr/bin/env sh - - FIFO="$XDG_RUNTIME_DIR/sandbar" - [ -e "$FIFO" ] && rm -f "$FIFO" - mkfifo "$FIFO" - - while cat "$FIFO"; do :; done | sandbar \ - -hide-normal-mode \ - -no-layout \ - -font "Go Mono Nerd Font:12" \ - -active-fg-color "#bbbbbb" \ - -active-bg-color "#222222" \ - -inactive-fg-color "#888888" \ - -inactive-bg-color "#111111" \ - -urgent-fg-color "#ab5656" \ - -title-fg-color "#bbbbbb" \ - -title-bg-color "#222222" - ''; - executable = true; - }; - - home.file."/home/hu/.config/river/status" = { - text = '' - #!/usr/bin/env sh - - FIFO="$XDG_RUNTIME_DIR/sandbar" - [ -e "$FIFO" ] || mkfifo "$FIFO" - - bat () { - read -r bat_status < /sys/class/power_supply/BAT0/status - read -r bat_capacity < /sys/class/power_supply/BAT0/capacity - case "$bat_status" in - "Charging") - bat_status="󱟦" - ;; - "Discharging") - bat_status="󱟤" - ;; - "Full") - bat_status="󱟢" - ;; - "Not charging") - bat_status="󱞜" - ;; - "Empty") - bat_status="󱟨" - ;; - - esac - bat="[$bat_status $bat_capacity]" - } - - datetime () { - dat="[$(date "+%H:%M")]" - } - - while true; do - if [ -d /sys/class/power_supply/BAT0/ ]; then - bat - fi - datetime - - echo "all status $bat$dat" > "$FIFO" - sleep 20 - done - ''; - executable = true; - }; - - wayland.windowManager.river = { - enable = true; - systemd.enable = true; - settings = { - map.normal = { - "Super+Shift Return" = "spawn foot"; - "Super+Shift C" = "close"; - "Super J" = "focus-view next"; - "Super K"= "focus-view previous"; - "Super+Shift J" = "swap next"; - "Super+Shift K" = "swap previous"; - "Super Space" = "toggle-float"; - "Super+Shift R" = "spawn ~/.config/river/init"; - "Super+Shift Q" = "exit"; - "Super H" = "send-layout-cmd rivertile 'main-ratio -0.05'"; - "Super L" = "send-layout-cmd rivertile 'main-ratio +0.05'"; - "Super P" = "spawn '$(tofi-drun)'"; - "Super S" = "spawn ~/.config/river/screenshot.sh"; - "Super O" = "spawn ~/.config/river/screencast.sh"; - "Super+Shift O" = "spawn ~/.config/river/screencast.sh audio"; - - "None XF86AudioRaiseVolume" = "spawn 'pamixer -i 5'"; - "None XF86AudioLowerVolume" = "spawn 'pamixer -d 5'"; - "None XF86AudioMute" = "spawn 'pamixer --toggle-mute'"; - "None XF86AudioMicMute" = "spawn 'pamixer --default-source --toggle-mute'"; - }; - - map-pointer.normal = { - "Super BTN_LEFT" = "move-view"; - "Super BTN_RIGHT" = "resize-view"; - }; - - keyboard-layout = "de"; - default-layout = "rivertile"; - rule-add."-app-id" = { - "'bar'" = "csd"; - }; - set-repeat = "50 300"; - spawn = [ - "'swaybg -i /nix/config/assets/wallpapers/river.png'" - "/home/hu/.config/river/status" - "/home/hu/.config/river/bar" - "'fnott --config /home/hu/.config/fnott/fnott.conf.ini'" - "'gnome-keyring-daemon --start'" - ]; - border-width = 1; - border-color-focused = "0x333333"; - border-color-unfocused = "0x000000"; - }; - - extraConfig = " - for i in $(seq 1 9); do - tags=$((1 << ($i - 1))) - riverctl map normal Super $i set-focused-tags $tags - riverctl map normal Super+Shift $i set-view-tags $tags - done - rivertile -main-ratio 0.5 -view-padding 0 -outer-padding 0 - "; - }; - - dconf.settings = { - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - }; - }; - - gtk = { - enable = true; - theme = { - name = "adw-gtk3-dark"; - package = pkgs.adw-gtk3; - }; - - iconTheme = { - name = "Adwaita"; - package = pkgs.adwaita-icon-theme; - }; - }; - - home.file."/home/hu/.config/river/screenshot.sh" = { - executable = true; - text = '' - #!/usr/bin/env sh - - mkdir -p "$HOME/images/screenshots" - screenshot_file="$HOME/images/screenshots/$(date +%s).png" - area="$(slurp)" - if [ "$area" = "selection cancelled" ]; then - exit 0 - fi - grim -g "$area" "$screenshot_file" - notify-send "Screenshot saved" "$screenshot_file" - wl-copy < "$screenshot_file" - ''; - }; - - home.file."/home/hu/.config/river/screencast.sh" = { - executable = true; - text = '' - #!/usr/bin/env sh - - if [ -n "$(pidof wf-recorder)" ]; then - pkill --signal=SIGINT wf-recorder - notify-send "Screencast saved" "$(cat "$HOME/.cache/last_screencast")" - wl-copy < "$(cat "$HOME/.cache/last_screencast")" - exit 0 - fi - - mkdir -p "$HOME/videos/screencasts/" - screencast_file="$HOME/videos/screencasts/$(date +%s).mp4" - area="$(slurp)" - if [ "$area" = "selection cancelled" ]; then - exit 0 - fi - - echo "$screencast_file" > "$HOME/.cache/last_screencast" - if [ "$1" = "audio" ]; then - wf-recorder -g "$area" --file="$screencast_file" --audio - else - wf-recorder -g "$area" --file="$screencast_file" - fi - ''; - }; - - services.fnott = { - enable = true; - configFile = "/home/hu/.config/fnott/fnott.conf.ini"; - }; - - home.file."/home/hu/.config/fnott/fnott.conf.ini" = { - text = '' - title-font=Go Mono Nerd Font - body-font=Go Mono Nerd Font - - background=111111ff - title-color=888888ff - body-color=888888ff - summary-color=888888ff - - default-timeout=10 - ''; - }; - }; -} - diff --git a/modules/nixos/hardware/audio/default.nix b/modules/nixos/hardware/audio/default.nix new file mode 100644 index 0000000..b9fadea --- /dev/null +++ b/modules/nixos/hardware/audio/default.nix @@ -0,0 +1,47 @@ +{ ... }: + +{ + services.pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + pulse.enable = true; + jack.enable = true; + + # Reduce latency + # https://wiki.nixos.org/wiki/PipeWire#Low-latency_setup + extraConfig = { + pipewire."92-low-latency" = { + "context.properties" = { + "default.clock.rate" = 48000; + "default.clock.quantum" = 32; + "default.clock.min-quantum" = 32; + "default.clock.max-quantum" = 32; + }; + }; + + pipewire-pulse."92-low-latency" = { + "context.properties" = [ + { + name = "libpipewire-module-protocol-pulse"; + args = { }; + } + ]; + "pulse.properties" = { + "pulse.min.req" = "32/48000"; + "pulse.default.req" = "32/48000"; + "pulse.max.req" = "32/48000"; + "pulse.min.quantum" = "32/48000"; + "pulse.max.quantum" = "32/48000"; + }; + "stream.properties" = { + "node.latency" = "32/48000"; + "resample.quality" = 1; + }; + }; + }; + }; +} + diff --git a/modules/nixos/hardware/nvidia/default.nix b/modules/nixos/hardware/nvidia/default.nix new file mode 100644 index 0000000..a3cc450 --- /dev/null +++ b/modules/nixos/hardware/nvidia/default.nix @@ -0,0 +1,44 @@ +{ config, ... }: + +{ + hardware = { + graphics = { + enable = true; + enable32Bit = true; + }; + + nvidia = { + open = true; + modesetting.enable = true; + package = config.boot.kernelPackages.nvidiaPackages.beta; + nvidiaSettings = false; + }; + }; + + boot.kernelParams = [ + "nvidia_drm.fbdev=1" + "nvidia.NVreg_PreserveVideoMemoryAllocations=1" + ]; + + services.xserver.videoDrivers = [ "nvidia" ]; + + environment.sessionVariables = { + LIBVA_DRIVER_NAME = "nvidia"; + GBM_BACKEND = "nvidia-drm"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + NVD_BACKEND = "direct"; + }; + + nixpkgs.config.cudaSupport = true; + nix = { + settings = { + substituters = [ + "https://cuda-maintainers.cachix.org" + ]; + trusted-public-keys = [ + "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" + ]; + }; + }; +} + diff --git a/modules/packages/fastfetch.nix b/modules/packages/fastfetch.nix deleted file mode 100644 index b6589ba..0000000 --- a/modules/packages/fastfetch.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ ... }: - -{ - home-manager.users.hu = { - programs.fastfetch = { - enable = true; - settings = { - modules = [ - "title" - "separator" - "os" - "kernel" - "initsystem" - "uptime" - "datetime" - "packages" - "terminal" - "wm" - "shell" - "cpu" - "gpu" - "memory" - "break" - "colors" - ]; - }; - }; - }; -} - diff --git a/modules/packages/firefox.nix b/modules/packages/firefox.nix deleted file mode 100644 index 2119757..0000000 --- a/modules/packages/firefox.nix +++ /dev/null @@ -1,272 +0,0 @@ -{ pkgs, ... }: - -# You could theoretically, like I did for a while, maintain this file -# to manage your Firefox and waste your time on this or you could just use -# Firefox accounts and become a functioning member of society. This file is -# now only a starting point and will not be kept up to date with my setup. - -{ - environment.persistence."/nix/persist".users.hu.directories = [ - ".mozilla/firefox/shaga" - ]; - - home-manager.users.hu = { - programs.firefox = { - enable = true; - package = pkgs.firefox-esr; - policies = { - EnableTrackingProtection = { - Value = true; - Cryptomining = true; - Fingerprinting = true; - EmailTracking = true; - }; - DisableTelemetry = true; - DisablePocket = true; - DisableFirefoxStudies = true; - DisableFirefoxAccounts = false; - DisableAccounts = false; - DontCheckDefaultBrowser = true; - OverrideFirstRunPage = ""; - OverridePostUpdatePage = ""; - NoDefaultBookmarks = true; - Cookies = { - Behaviour = "reject-foreign"; - BehaviourPrivateBrowsing = "reject-foreign"; - }; - - SearchEngines = { # ESR only - Remove = [ "Bing" "Google" "DuckDuckGo" "Wikipedia (en)" ]; - }; - - # https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265/17 - ExtensionSettings = with builtins; - let extension = shortId: uuid: { - name = uuid; - value = { - install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; - installation_mode = "normal_installed"; - }; - }; - in listToAttrs [ - (extension "ublock-origin" "uBlock0@raymondhill.net") - ]; - - "3rdparty".Extensions = { - "uBlock0@raymondhill.net".adminSettings = { - userSettings = { - importedLists = [ - "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt" - ]; - externalLists = "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt"; - }; - selectedFilterLists = [ - "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/LegitimateURLShortener.txt" - "user-filters" "ublock-filters" "ublock-badware" "ublock-privacy" "ublock-quick-fixes" - "ublock-unbreak" "easylist" "adguard-generic" "adguard-mobile" "easyprivacy" "adguard-spyware" - "adguard-spyware-url" "block-lan" "urlhaus-1" "curben-phishing" "plowe-0" "dpollock-0" "fanboy-cookiemonster" - "ublock-cookies-easylist" "adguard-cookies" "ublock-cookies-adguard" "fanboy-social" "adguard-social" - "fanboy-thirdparty_social" "easylist-chat" "easylist-newsletters" "easylist-notifications" - "easylist-annoyances" "adguard-mobile-app-banners" "adguard-other-annoyances" "adguard-popup-overlays" - "adguard-widgets" "ublock-annoyances" "ALB-0" "BGR-0" "CHN-0" "CZE-0" "DEU-0" "EST-0" "ara-0" "spa-1" - "spa-0" "FIN-0" "FRA-0" "GRC-0" "HRV-0" "HUN-0" "IDN-0" "ISR-0" "IND-0" "IRN-0" "ISL-0" "ITA-0" - "JPN-1" "KOR-1" "LTU-0" "LVA-0" "MKD-0" "NLD-0" "NOR-0" "POL-0" "POL-2" "ROU-1" "RUS-0" "SWE-1" - "SVN-0" "THA-0" "TUR-0" "VIE-1" - ]; - }; - }; - }; - - profiles.shaga = { - isDefault = true; - search = { - force = true; - default = "Kagi"; - order = [ "Kagi" "Gruble" "Nix Packages" "Nix Options" "Home-manager options" ]; - engines = { - "Kagi" = { - urls = [ - { - template = "https://kagi.com/search"; - params = [ - { name = "q"; value = "{searchTerms}"; } - ]; - } - ]; - iconUpdateURL = "https://kagi.com/favicon.ico"; - updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly - definedAliases = [ "@k" ]; - }; - "Gruble" = { - urls = [ - { - template = "https://gruble.de/search"; - params = [ - { name = "q"; value = "{searchTerms}"; } - ]; - } - ]; - iconUpdateURL = "https://gruble.de/favicon.ico"; - updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly - definedAliases = [ "@g" ]; - }; - "Nix Packages" = { - urls = [{ - template = "https://search.nixos.org/packages"; - params = [ - { name = "type"; value = "packages"; } - { name = "channel"; value = "unstable"; } - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - iconUpdateURL = "https://nixos.org/favicon.png"; - updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly - definedAliases = [ "@np" ]; - }; - "Nix Options" = { - urls = [{ - template = "https://search.nixos.org/options"; - params = [ - { name = "type"; value = "packages"; } - { name = "channel"; value = "unstable"; } - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - iconUpdateURL = "https://nixos.org/favicon.png"; - updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly - definedAliases = [ "@no" ]; - }; - "Home-manager options" = { - urls = [{ - template = "https://home-manager-options.extranix.com"; - params = [ - { name = "release"; value = "master"; } - { name = "query"; value = "{searchTerms}"; } - ]; - }]; - iconUpdateURL = "https://home-manager-options.extranix.com/images/favicon.png"; - updateInterval = 7 * 24 * 60 * 60 * 1000; # Weekly - definedAliases = [ "@ho" ]; - }; - }; - }; - - settings = { - "browser.urlbar.quicksuggest.contextualOptIn.topPosition" = false; - "extensions.postDownloadThirdPartyPrompt" = false; - "extensions.getAddons.cache.enabled" = false; - "browser.search.update" = false; - "extensions.autoDisableScopes" = 0; - "browser.startup.page" = 0; - "browser.startup.homepage" = "about:blank"; - "browser.newtabpage.enabled" = false; - "browser.newtabpage.activity-stream.showSponsored" = false; - "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; - "browser.newtabpage.activity-stream.default.sites" = ""; - "geo.provider.use_gpsd" = false; - "extensions.getAddons.showPane" = false; - "htmlaboutaddons.recommendations.enabled" = false; - "discovery.enabled" = false; - "browser.shopping.experience2023.enabled" = false; - "app.shield.optoutstudies.enabled" = false; - "app.normandy.enabled" = false; - "app.normandy.api_url" = ""; - "breakpad.reportURL" = ""; - "browser.newtabpage.activity-stream.feeds.telemetry" = false; - "browser.newtabpage.activity-stream.telemetry" = false; - "browser.search.serpEventTelemetry.enabled" = false; - "dom.security.unexpected_system_load_telemetry_enabled" = false; - "network.trr.confirmation_telemetry_enabled" = false; - "security.app_menu.recordEventTelemetry" = false; - "security.certerrors.recordEventTelemetry" = false; - "security.protectionspopup.recordEventTelemetry" = false; - "toolkit.telemetry.bhrPing.enabled" = false; - "toolkit.telemetry.firstShutdownPing.enabled" = false; - "toolkit.telemetry.newProfilePing.enabled" = false; - "toolkit.telemetry.pioneer-new-studies-available" = false; - "toolkit.telemetry.shutdownPingSender.enabled" = false; - "toolkit.telemetry.unified" = false; - "toolkit.telemetry.updatePing.enabled" = false; - "toolkit.telemetry.server" = "127.0.0.1"; - "browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint" = "127.0.0.1"; - "browser.tabs.crashReporting.sendReport" = false; - "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; - "captivedetect.canonicalURL" = ""; - "network.captive-portal-service.enabled" = false; - "network.connectivity-service.enabled" = false; - "browser.safebrowsing.downloads.remote.enabled" = false; - "browser.urlbar.speculativeConnect.enabled" = false; - "browser.search.suggest.enabled" = true; - "browser.urlbar.suggest.quicksuggest.nonsponsored" = false; - "browser.urlbar.suggest.quicksuggest.sponsored" = false; - "browser.urlbar.suggest.searches" = true; - "browser.urlbar.suggest.bookmark" = false; - "browser.urlbar.suggest.addons" = false; - "browser.urlbar.suggest.calculator" = false; - "browser.urlbar.suggest.clipboard" = false; - "browser.urlbar.suggest.engines" = false; - "browser.urlbar.suggest.history" = false; - "browser.urlbar.suggest.mdn" = false; - "browser.urlbar.suggest.openpage" = false; - "browser.urlbar.suggest.pocket" = false; - "browser.urlbar.suggest.recentsearches" = false; - "browser.urlbar.suggest.remotetab" = false; - "browser.urlbar.suggest.topsites" = false; - "browser.urlbar.suggest.trending" = false; - "browser.urlbar.suggest.weather" = false; - "browser.urlbar.suggest.yelp" = false; - "browser.urlbar.richSuggestions.tail" = false; - "browser.urlbar.quicksuggest.shouldShowOnboardingDialog" = false; - "browser.urlbar.quicksuggest.rustEnabled" = false; - "browser.urlbar.richSuggestions.featureGate" = false; - "browser.urlbar.trending.featureGate" = false; - "browser.urlbar.addons.featureGate" = false; - "browser.urlbar.mdn.featureGate" = false; - "browser.urlbar.pocket.featureGate" = false; - "browser.urlbar.weather.featureGate" = false; - "browser.formfill.enable" = false; - "dom.forms.autocomplete.formautofill" = false; - "extensions.formautofill.addresses.capture.enabled" = false; - "extensions.formautofill.creditCards.enabled" = false; - "signon.autofillForms" = false; - "signon.rememberSignons" = false; - "signon.formlessCapture.enabled" = false; - "network.auth.subresource-http-auth-allow" = 1; - "dom.security.https_only_mode" = true; - "network.http.referer.XOriginTrimmingPolicy" = 2; - "privacy.userContext.enabled" = true; - "privacy.userContext.ui.enabled" = true; - "privacy.sanitize.sanitizeOnShutdown" = true; - "privacy.clearHistory.siteSettings" = true; - "media.peerconnection.ice.no_host" = true; - "browser.download.start_downloads_in_tmp_dir" = true; - "browser.helperApps.deleteTempFileOnExit" = true; - "browser.uitour.enabled" = false; - "pdfjs.enableScripting" = false; - "browser.download.useDownloadDir" = false; - "browser.download.alwaysOpenPanel" = true; - "browser.download.manager.addToRecentDocs" = false; - "browser.download.always_ask_before_handling_new_types" = true; - "browser.contentblocking.category" = "strict"; - "privacy.clearOnShutdown.cache" = true; - "privacy.clearOnShutdown.downloads" = true; - "privacy.clearOnShutdown.formdata" = true; - "privacy.clearOnShutdown.history" = true; - "privacy.clearOnShutdown.sessions" = true; - "privacy.clearOnShutdown.cookies" = true; - "privacy.clearOnShutdown.offlineApps" = true; - "privacy.clearSiteData.historyFormDataAndDownloads" = true; - "browser.startup.homepage_override.mstone" = "ignore"; - "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; - "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false; - "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; - "browser.messaging-system.whatsNewPanel.enabled" = false; - "browser.urlbar.showSearchTerms.enabled" = false; - "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = ""; - "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines" = ""; - }; - }; - }; - }; -} - diff --git a/modules/packages/foot.nix b/modules/packages/foot.nix deleted file mode 100644 index 2842d72..0000000 --- a/modules/packages/foot.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ ... }: - -{ - home-manager.users.hu = { - programs.foot = { - enable = true; - settings = { - main = { - pad = "2x2 center"; - font = "Go Mono Nerd Font:size=12"; - }; - - mouse = { - hide-when-typing = "yes"; - }; - - scrollback = { - lines = 10000; - }; - - colors = { - alpha = 0.9; - - foreground = "c5c9c5"; - background = "181616"; - selection-foreground = "c8c093"; - selection-background = "2d4f67"; - - regular0 = "0d0c0c"; - regular1 = "c4746e"; - regular2 = "8a9a7b"; - regular3 = "c4b28a"; - regular4 = "8ba4b0"; - regular5 = "a292a3"; - regular6 = "8ea4a2"; - regular7 = "c8c093"; - - bright0 = "a6a69c"; - bright1 = "e46876"; - bright2 = "87a987"; - bright3 = "e6c384"; - bright4 = "7fb4ca"; - bright5 = "938aa9"; - bright6 = "7aa89f"; - bright7 = "c5c9c5"; - - "16" = "b6927b"; - "17" = "b98d7b"; - }; - }; - }; - }; -} - diff --git a/modules/packages/git.nix b/modules/packages/git.nix deleted file mode 100644 index b0d49ba..0000000 --- a/modules/packages/git.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ pkgs, ... }: - -let - ugp = "/nix/config/secrets/git_uni"; -in { - home-manager.users.hu = { - home.file."/home/hu/.config/git/personal" = { - text = '' - [user] - email = "me@caem.dev" - name = "caem" - signingKey = "E50FC66B5062070DC462661C69A830D03203405F" - - [gpg] - program = "${pkgs.gnupg}/bin/gpg2" - - [commit] - gpgSign = true - - [tag] - gpgSign = true - - [init] - defaultBranch = "master" - - [pull] - rebase = true - ''; - }; - - home.file."/home/hu/.config/git/uni" = { - source = ugp; - }; - - home.file."/home/hu/.config/git/config" = { - text = '' - [includeIf "gitdir:~/programming/personal/**"] - path = ~/.config/git/personal - - [includeIf "gitdir:~/programming/forks/**"] - path = ~/.config/git/personal - - [includeIf "gitdir:~/programming/uni/**"] - path = ~/.config/git/uni - ''; - }; - }; -} - diff --git a/modules/packages/konsole/custom.colorscheme b/modules/packages/konsole/custom.colorscheme deleted file mode 100644 index f1a3bcf..0000000 --- a/modules/packages/konsole/custom.colorscheme +++ /dev/null @@ -1,100 +0,0 @@ -[Background] -Color=35,38,39 - -[BackgroundFaint] -Color=49,54,59 - -[BackgroundIntense] -Color=0,0,0 - -[Color0] -Color=35,38,39 - -[Color0Faint] -Color=49,54,59 - -[Color0Intense] -Color=127,140,141 - -[Color1] -Color=237,21,21 - -[Color1Faint] -Color=120,50,40 - -[Color1Intense] -Color=192,57,43 - -[Color2] -Color=17,209,22 - -[Color2Faint] -Color=23,162,98 - -[Color2Intense] -Color=28,220,154 - -[Color3] -Color=246,116,0 - -[Color3Faint] -Color=182,86,25 - -[Color3Intense] -Color=253,188,75 - -[Color4] -Color=29,153,243 - -[Color4Faint] -Color=27,102,143 - -[Color4Intense] -Color=61,174,233 - -[Color5] -Color=155,89,182 - -[Color5Faint] -Color=97,74,115 - -[Color5Intense] -Color=142,68,173 - -[Color6] -Color=26,188,156 - -[Color6Faint] -Color=24,108,96 - -[Color6Intense] -Color=22,160,133 - -[Color7] -Color=252,252,252 - -[Color7Faint] -Color=99,104,109 - -[Color7Intense] -Color=255,255,255 - -[Foreground] -Color=252,252,252 - -[ForegroundFaint] -Color=239,240,241 - -[ForegroundIntense] -Color=61,174,233 - -[General] -Anchor=0.5,0.5 -Blur=false -ColorRandomization=false -Description=Custom -FillStyle=Tile -Opacity=0.9 -Wallpaper= -WallpaperFlipType=NoFlip -WallpaperOpacity=1 diff --git a/modules/packages/konsole/konsolestaterc b/modules/packages/konsole/konsolestaterc deleted file mode 100644 index 8eac825..0000000 --- a/modules/packages/konsole/konsolestaterc +++ /dev/null @@ -1,4 +0,0 @@ -[MainWindow] -1920x1080 screen: Height=640 -1920x1080 screen: Width=1138 -State=AAAA/wAAAAD9AAAAAQAAAAAAAAAAAAAAAPwCAAAAAvsAAAAiAFEAdQBpAGMAawBDAG8AbQBtAGEAbgBkAHMARABvAGMAawAAAAAA/////wAAAXIA////+wAAABwAUwBTAEgATQBhAG4AYQBnAGUAcgBEAG8AYwBrAAAAAAD/////AAABEQD///8AAARyAAACgAAAAAQAAAAEAAAACAAAAAj8AAAAAQAAAAIAAAACAAAAFgBtAGEAaQBuAFQAbwBvAGwAQgBhAHIAAAAAAP////8AAAAAAAAAAAAAABwAcwBlAHMAcwBpAG8AbgBUAG8AbwBsAGIAYQByAAAAAAD/////AAAAAAAAAAA= diff --git a/modules/packages/nvim.nix b/modules/packages/nvim.nix deleted file mode 100644 index 6c629fd..0000000 --- a/modules/packages/nvim.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ pkgs, ... }: - -{ - environment.persistence."/nix/persist".users.hu.directories = [ - ".local/share/nvim" - ".local/state/nvim" - ]; - - environment.variables = { - EDITOR = "nvim"; - }; - - home-manager.users.hu = { - programs.neovim = { - enable = true; - defaultEditor = true; - extraPackages = with pkgs; [ - lua-language-server - nodePackages.intelephense - nodePackages.typescript-language-server - (llvmPackages_19.clang-tools.override { - enableLibcxx = true; - }) - ccls - ripgrep - nil - gcc14 - basedpyright - rust-analyzer - zathura - git - texliveFull - luajitPackages.jsregexp - luajitPackages.luarocks - fd - texlab - haskell-language-server - rustc - shellcheck - bash-language-server - ]; - }; - - home.file."/home/hu/.config/nvim" = { - source = ../../dotfiles/nvim; - recursive = true; - }; - }; -} - diff --git a/modules/packages/rofi.nix b/modules/packages/rofi.nix deleted file mode 100644 index 3471aa6..0000000 --- a/modules/packages/rofi.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, ... }: - -{ - home-manager.users.hu = { - programs.rofi = { - enable = true; - package = pkgs.rofi-wayland; - theme = "sidebar"; - }; - }; -} diff --git a/modules/packages/tmux.nix b/modules/packages/tmux.nix deleted file mode 100644 index 960e832..0000000 --- a/modules/packages/tmux.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ pkgs, ... }: - -{ - programs.tmux = { - enable = true; - customPaneNavigationAndResize = true; - baseIndex = 1; - plugins = with pkgs; [ - tmuxPlugins.resurrect - ]; - extraConfig = '' - # Enable mouse - setw -g mouse on - - # Neovim - set-option -sg escape-time 10 - set-option -g focus-events on - # https://stackoverflow.com/questions/60309665/neovim-colorscheme-does-not-look-right-when-using-nvim-inside-tmux#comment124479399_60313682 - set-option -ga terminal-overrides ",xterm-256color:Tc" - - # vi mode - set -g mode-keys vi - set -g status-keys vi - - # Rebind prefix key to C-a - set -g prefix C-a - bind C-a send-prefix - unbind C-b - - # Clipboard - set -ga update-environment WAYLAND_DISPLAY - bind Escape copy-mode - bind p run-shell 'tmux set-buffer -- "$(wl-paste -t "text/plain;charset=utf-8")"; tmux paste-buffer' - bind -T copy-mode-vi 'v' send -X begin-selection - bind -T copy-mode-vi 'y' send -X copy-pipe 'wl-copy' - set -s set-clipboard off - - # Status bar - set -g status-style bg=default - set -g status-fg 4 - ''; - }; -} diff --git a/modules/packages/waybar.nix b/modules/packages/waybar.nix deleted file mode 100644 index 5ef14b7..0000000 --- a/modules/packages/waybar.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ ... }: - -{ - home-manager.users.hu = { - programs.waybar = { - enable = true; - systemd = { - enable = true; - }; - - settings = { - bar = { - layer = "top"; - position = "top"; - height = 32; - output = [ - "DP-1" - ]; - - modules-left = [ "hyprland/workspaces" "hyprland/submap" ]; - modules-center = [ "hyprland/window" ]; - modules-right = [ "tray" "clock" ]; - }; - }; - style = '' - * { - all: unset; - border-radius: 0; - font-family: "Go Mono Nerd Font"; - font-size: 11pt; - min-height: 0; - } - - window#waybar { - color: #c5c9c5; - background: #181616; - border-bottom: 2px solid rgba(53,132,228, 1); - } - - #workspaces button { - padding: 0 8pt 0 8pt; - } - - #workspaces button.active { - color: #3584e4; - } - - #clock { - padding: 0 8pt 0 8pt; - } - ''; - }; - }; -} - diff --git a/modules/packages/zsh.nix b/modules/packages/zsh.nix deleted file mode 100644 index 8b7ed1c..0000000 --- a/modules/packages/zsh.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ pkgs, ... }: - -{ - users.users.hu.shell = pkgs.zsh; - - environment.variables = { - ZDOTDIR = "/home/hu/.config/zsh"; - }; - - home-manager.users.hu = { - home.packages = with pkgs; [ - fzf - thefuck - zsh-fzf-tab - zsh-completions - zsh-autosuggestions - zsh-syntax-highlighting - nix-zsh-completions - zsh-nix-shell - ]; - - home.sessionVariables = { - ZDOTDIR = "/home/hu/.config/zsh"; - }; - - home.file."/home/hu/.config/zsh/conf.d" = { - source = ../../dotfiles/zsh/conf.d; - recursive = true; - }; - - home.file."/home/hu/.config/zsh/.zshrc" = { - text = '' - #!/usr/bin/env zsh - - SYNTAX_PLUGIN="${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" - AUTOSUGGEST_PLUGIN="${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh" - NIX_SHELL_PLUGIN="${pkgs.zsh-nix-shell}/share/zsh-nix-shell/nix-shell.plugin.zsh" - FZF_TAB_PLUGIN="${pkgs.zsh-fzf-tab}/share/fzf-tab/fzf-tab.plugin.zsh" - '' + (builtins.readFile ../../dotfiles/zsh/.zshrc); - }; - }; -} - diff --git a/modules/system/basic.nix b/modules/system/basic.nix deleted file mode 100644 index 531ed0f..0000000 --- a/modules/system/basic.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ pkgs, ... }: - -{ - programs.zsh.enable = true; - - programs.nh = { - enable = true; - flake = "/nix/config"; - }; - - environment.systemPackages = with pkgs; [ - fastfetch - wget - unzip - git - tree - dos2unix - neovim - libqalculate - ]; -} diff --git a/modules/system/development.nix b/modules/system/development.nix deleted file mode 100644 index a711c57..0000000 --- a/modules/system/development.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs, ... }: - -{ - imports = [ - ../packages/git.nix - ../packages/nvim.nix - ]; - - environment.systemPackages = with pkgs; [ - wireshark - seer - mars-mips - ]; - - users.users.hu.extraGroups = [ "wireshark" ]; -} - diff --git a/modules/system/fonts.nix b/modules/system/fonts.nix deleted file mode 100644 index 8ee1c4e..0000000 --- a/modules/system/fonts.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, ... }: - -{ - fonts.packages = with pkgs; [ - nerdfonts - ]; -} - diff --git a/modules/system/security.nix b/modules/system/security.nix deleted file mode 100644 index 11415de..0000000 --- a/modules/system/security.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ ... }: - -{ - security.sudo.extraConfig = '' - Defaults lecture="never" - ''; - - security.apparmor = { - enable = true; - }; - - nixpkgs.config.permittedInsecurePackages = [ - "jitsi-meet-1.0.8043" - ]; -} - diff --git a/modules/system/virtualisation.nix b/modules/system/virtualisation.nix deleted file mode 100644 index 891a978..0000000 --- a/modules/system/virtualisation.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ ... }: - -{ - virtualisation.libvirtd.enable = true; - programs.virt-manager.enable = true; - - users.users.hu.extraGroups = [ "libvirtd" ]; - - home-manager.users.hu = { - dconf.settings = { - "org/virt-manager/virt-manager/connections" = { - autoconnect = ["qemu:///system"]; - uris = ["qemu:///system"]; - }; - }; - }; -} -