Begin rewrite
This commit is contained in:
parent
fb5d4d46f8
commit
bc6d1e6984
97 changed files with 328 additions and 3101 deletions
83
README.md
83
README.md
|
@ -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
|
||||
```
|
BIN
assets/screenshots/hyprland.png
vendored
BIN
assets/screenshots/hyprland.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 2 MiB |
BIN
assets/screenshots/kde.png
vendored
BIN
assets/screenshots/kde.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 384 KiB |
BIN
assets/wallpapers/hyprland.jpg
vendored
BIN
assets/wallpapers/hyprland.jpg
vendored
Binary file not shown.
Before Width: | Height: | Size: 1.4 MiB |
BIN
assets/wallpapers/kde.png
vendored
BIN
assets/wallpapers/kde.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 3.1 MiB |
BIN
assets/wallpapers/river.png
vendored
BIN
assets/wallpapers/river.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 164 KiB |
|
@ -1,6 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
for f in *; do
|
||||
[ -d "$f" ] && ln -svf "$PWD/$f" "$HOME/.config"
|
||||
done
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
vim.bo.tabstop = 2
|
||||
vim.bo.softtabstop = 2
|
||||
vim.bo.shiftwidth = 2
|
|
@ -1,3 +0,0 @@
|
|||
vim.bo.tabstop = 2
|
||||
vim.bo.softtabstop = 2
|
||||
vim.bo.shiftwidth = 2
|
|
@ -1,3 +0,0 @@
|
|||
require"settings"
|
||||
require"plugins"
|
||||
|
|
@ -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 {
|
||||
['<C-k>'] = cmp.mapping.select_prev_item(),
|
||||
['<C-j>'] = cmp.mapping.select_next_item(),
|
||||
['<A-j>'] = cmp.mapping.scroll_docs(4),
|
||||
['<A-k>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<S-CR>'] = cmp.mapping.complete(),
|
||||
['<C-Space>'] = cmp.mapping.confirm({ select = true }),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
},
|
||||
sources = {
|
||||
{ name = "path" },
|
||||
{ name = "luasnip" },
|
||||
{ name = "zsh" },
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "buffer" },
|
||||
{ name = "treesitter" },
|
||||
{ name = "nvim-lua" },
|
||||
{ name = "tmux" },
|
||||
},
|
||||
}
|
||||
end
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
return {
|
||||
"numToStr/Comment.nvim",
|
||||
opts = {},
|
||||
lazy = false
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
return {
|
||||
"stevearc/dressing.nvim",
|
||||
config = function()
|
||||
require"dressing".setup {
|
||||
}
|
||||
end
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
return {
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
main = "ibl",
|
||||
opts = {},
|
||||
opts = {
|
||||
indent = {
|
||||
char = "▏"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
return function ()
|
||||
require"lspconfig".ccls.setup {
|
||||
capabilities = require"cmp_nvim_lsp".default_capabilities(),
|
||||
filetypes = {
|
||||
"c"
|
||||
}
|
||||
}
|
||||
end
|
|
@ -1,8 +0,0 @@
|
|||
return function ()
|
||||
require"lspconfig".clangd.setup {
|
||||
capabilities = require"cmp_nvim_lsp".default_capabilities(),
|
||||
filetypes = {
|
||||
"cpp", "objc", "objcpp", "cuda", "proto"
|
||||
}
|
||||
}
|
||||
end
|
|
@ -1,4 +0,0 @@
|
|||
return function()
|
||||
require"lspconfig".hls.setup {}
|
||||
end
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
return function ()
|
||||
require"lspconfig".ts_ls.setup {
|
||||
capabilities = require"cmp_nvim_lsp".default_capabilities()
|
||||
}
|
||||
end
|
|
@ -1,5 +0,0 @@
|
|||
return function ()
|
||||
require"lspconfig".texlab.setup {
|
||||
capabilities = require"cmp_nvim_lsp".default_capabilities()
|
||||
}
|
||||
end
|
|
@ -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
|
|
@ -1,6 +0,0 @@
|
|||
return function ()
|
||||
require"lspconfig".nil_ls.setup {
|
||||
capabilities = require"cmp_nvim_lsp".default_capabilities()
|
||||
}
|
||||
end
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
return function ()
|
||||
require"lspconfig".intelephense. setup {
|
||||
capabilities = require"cmp_nvim_lsp".default_capabilities(),
|
||||
}
|
||||
end
|
|
@ -1,10 +0,0 @@
|
|||
return function()
|
||||
require"lspconfig".basedpyright.setup {
|
||||
settings = {
|
||||
python = {
|
||||
pythonPath = vim.fn.exepath("python3"),
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
return function()
|
||||
require"lspconfig".rust_analyzer.setup {
|
||||
settings = {
|
||||
["rust-analyzer"] = {
|
||||
diagnostics = {
|
||||
enable = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
|
@ -1,5 +0,0 @@
|
|||
return function()
|
||||
require"lspconfig".bashls.setup {
|
||||
capabilities = require"cmp_nvim_lsp".default_capabilities(),
|
||||
}
|
||||
end
|
|
@ -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", "<leader>lgD", vlb.declaration, "[l]sp [g]o to [D]eclaration")
|
||||
map("n", "<leader>lgd", vlb.definition, "[l]sp [g]o to [d]definition")
|
||||
map("n", "<leader>lgi", vlb.implementation, "[l]sp [g]o to [i]mplementation")
|
||||
map("n", "<leader>lgr", vlb.references, "[l]sp [g]o to [r]eferences")
|
||||
map("n", "<leader>lh", vlb.hover, "[l]sp [h]over over selection")
|
||||
map("n", "<leader>lfm", format, "[l]sp [f]or[m]at file")
|
||||
map("n", "<leader>lca", vlb.code_action, "[l]sp [C]ode [a]ction")
|
||||
end,
|
||||
})
|
||||
end
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
return {
|
||||
"norcalli/nvim-colorizer.lua",
|
||||
config = function()
|
||||
require"colorizer".setup()
|
||||
end,
|
||||
}
|
|
@ -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", "<leader>tf", tb.find_files,"[T]elescope [f]iles")
|
||||
map("n", "<leader>tg", tb.live_grep, "[T]elescope [g]rep")
|
||||
map("n", "<leader>tb", tb.buffers, "[T]elescope [b]uffers")
|
||||
map("n", "<leader>tm", function()
|
||||
tb.man_pages({ "ALL" })
|
||||
end, "[T]elescope [m]an pages")
|
||||
map("n", "<leader>tk", tb.keymaps, "[T]elescope [k]eymaps")
|
||||
map("n", "<leader>tk", tb.keymaps, "[T]elescope [k]eymaps")
|
||||
|
||||
-- LSP pickers
|
||||
map("n", "<leader>tld", tb.diagnostics, "[T]elescope [l]sp [d]iagnostics")
|
||||
map("n", "<leader>tlr", tb.lsp_references, "[T]elescope [l]sp [r]eferences")
|
||||
end,
|
||||
}
|
|
@ -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",
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
return {
|
||||
"lervag/vimtex",
|
||||
lazy = false,
|
||||
init = function()
|
||||
vim.g.vimtex_view_method = "zathura"
|
||||
end
|
||||
}
|
||||
|
|
@ -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,
|
||||
})
|
|
@ -1,3 +0,0 @@
|
|||
require"settings.options"
|
||||
require"settings.autocmds"
|
||||
require"settings.keymaps"
|
|
@ -1,7 +0,0 @@
|
|||
local map = require"util.map"
|
||||
|
||||
map("n", "<Space>", "<Nop>", "Mapleader")
|
||||
vim.g.mapleader = " "
|
||||
|
||||
map("n", "<leader>df", vim.diagnostic.open_float, "[D]iagnostics [f]loat")
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
# TODO: Script to prompt which environment the user wants to enter in to
|
|
@ -1,6 +0,0 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
if [ -n "$(command -v qt5ct)" ] && [ -z "$DESKTOP_SESSION" ]; then
|
||||
export QT_QPA_PLATFORMTHEME=qt5ct
|
||||
fi
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
if [ -n "$(command -v thefuck)" ]; then
|
||||
fuck() {
|
||||
eval $(thefuck --alias)
|
||||
fuck
|
||||
}
|
||||
fi
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
GPG_TTY=$(tty)
|
||||
export GPG_TTY
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
#!/usr/bin/env zsh
|
||||
|
||||
if [ -n "$(command -v "nvim")" ]; then
|
||||
export MANPAGER='nvim +Man!'
|
||||
export EDITOR="nvim"
|
||||
fi
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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]# '
|
||||
|
|
@ -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
|
||||
|
|
@ -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)
|
||||
|
|
@ -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"
|
||||
|
87
flake.lock
generated
87
flake.lock
generated
|
@ -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"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
41
flake.nix
41
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
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
97
hosts/puter/default.nix
Normal file
97
hosts/puter/default.nix
Normal file
|
@ -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 }
|
||||
}
|
||||
|
62
hosts/puter/disko.nix
Normal file
62
hosts/puter/disko.nix
Normal file
|
@ -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"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
11
hosts/puter/packages.nix
Normal file
11
hosts/puter/packages.nix
Normal file
|
@ -0,0 +1,11 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = let
|
||||
modules = ../../modules/nixos;
|
||||
in [
|
||||
"${modules}/hardware/nvidia"
|
||||
"${modules}/hardware/audio"
|
||||
];
|
||||
}
|
||||
|
0
hosts/puter/persist.nix
Normal file
0
hosts/puter/persist.nix
Normal file
|
@ -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";
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -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";
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -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; };
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
{
|
||||
mkHosts = {
|
||||
modules,
|
||||
nixpkgs,
|
||||
inputs,
|
||||
modules,
|
||||
}: builtins.listToAttrs (builtins.map (host: {
|
||||
name = host;
|
||||
value = nixpkgs.lib.nixosSystem {
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
# };
|
||||
}
|
||||
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
47
modules/nixos/hardware/audio/default.nix
Normal file
47
modules/nixos/hardware/audio/default.nix
Normal file
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
44
modules/nixos/hardware/nvidia/default.nix
Normal file
44
modules/nixos/hardware/nvidia/default.nix
Normal file
|
@ -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="
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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
|
|
@ -1,4 +0,0 @@
|
|||
[MainWindow]
|
||||
1920x1080 screen: Height=640
|
||||
1920x1080 screen: Width=1138
|
||||
State=AAAA/wAAAAD9AAAAAQAAAAAAAAAAAAAAAPwCAAAAAvsAAAAiAFEAdQBpAGMAawBDAG8AbQBtAGEAbgBkAHMARABvAGMAawAAAAAA/////wAAAXIA////+wAAABwAUwBTAEgATQBhAG4AYQBnAGUAcgBEAG8AYwBrAAAAAAD/////AAABEQD///8AAARyAAACgAAAAAQAAAAEAAAACAAAAAj8AAAAAQAAAAIAAAACAAAAFgBtAGEAaQBuAFQAbwBvAGwAQgBhAHIAAAAAAP////8AAAAAAAAAAAAAABwAcwBlAHMAcwBpAG8AbgBUAG8AbwBsAGIAYQByAAAAAAD/////AAAAAAAAAAA=
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home-manager.users.hu = {
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
theme = "sidebar";
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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
|
||||
];
|
||||
}
|
|
@ -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" ];
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
fonts.packages = with pkgs; [
|
||||
nerdfonts
|
||||
];
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
security.sudo.extraConfig = ''
|
||||
Defaults lecture="never"
|
||||
'';
|
||||
|
||||
security.apparmor = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"jitsi-meet-1.0.8043"
|
||||
];
|
||||
}
|
||||
|
|
@ -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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue