Compare commits
99
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ab3fb373a
|
||
|
|
81cec030dc
|
||
|
|
b9ebc10f30
|
||
|
|
91ad28b207
|
||
|
|
1e47ff812b
|
||
|
|
744b773657
|
||
|
|
bf799ca883 | ||
|
|
48999b0576
|
||
|
|
828154845b
|
||
|
|
880d1508cc
|
||
|
|
c75ecae2dc | ||
|
|
b427889b06
|
||
|
|
9b60cdac2c
|
||
|
|
6405a3f0aa
|
||
|
|
9f14456ecc
|
||
|
|
c6b1eb5337 | ||
|
|
a3f1b26f31 | ||
|
|
c78fb3019c
|
||
|
|
a70cb42d04
|
||
|
|
f8065ad6e1
|
||
|
|
0b4027f0c0
|
||
|
|
ee60d5de02 | ||
|
|
6cf609acc1 | ||
|
|
7853a1b457 | ||
|
|
a387a4cd07
|
||
|
|
ce3a1bc06d
|
||
|
|
b8340019e8 | ||
|
|
b4390109c9 | ||
|
|
d602b3ba45 | ||
|
|
a1f77ed407
|
||
|
|
d7a2d4cf38
|
||
|
|
04518129d5
|
||
|
|
0769fe1e0d
|
||
|
|
fee14618b8
|
||
|
|
7bc8e821b5
|
||
|
|
9f61ec8200
|
||
|
|
28a8ccc532
|
||
|
|
76ea6e6e13
|
||
|
|
3fa654f774
|
||
|
|
f2be3130a2
|
||
|
|
23999ee3a4
|
||
|
|
593ab20414
|
||
|
|
e4614dbee5
|
||
|
|
1070f65c6e
|
||
|
|
884999f719
|
||
|
|
d3dbf8583a
|
||
|
|
cf2a710a79 | ||
|
|
927628a576
|
||
|
|
0b16eaf3b0 | ||
|
|
c89fc1366d
|
||
|
|
4c29cc3bfc
|
||
|
|
ad717d64b8
|
||
|
|
4acbd22078
|
||
|
|
75982f5f5e
|
||
|
|
ce65a70de4
|
||
|
|
8567e7b671
|
||
|
|
a1f37f6b19 | ||
|
|
9fa85be412 | ||
|
|
23500b07fa | ||
|
|
fdf4e5e1b9 | ||
|
|
67648eda89 | ||
|
|
76ac41a965 | ||
|
|
5c70cdc20f | ||
|
|
c21066e810 | ||
|
|
93b15391ca | ||
|
|
317571499e | ||
|
|
971a263963 | ||
|
|
2fb3e2867c | ||
|
|
4492dcdff5 | ||
|
|
7d8dcee57c | ||
|
|
3bd43f72a2 | ||
|
|
915ecc73e8 | ||
|
|
43c5308feb | ||
|
|
a1c0407f02 | ||
|
|
33f590b214 | ||
|
|
89cdef92a7 | ||
|
|
2f378ddc22 | ||
|
|
937deb7079 | ||
|
|
4c462c21f3 | ||
|
|
eb26a93944 | ||
|
|
098478fa0f | ||
|
|
80fd89c5ac | ||
|
|
1a8c910e3a | ||
|
|
3992cab7c8 | ||
|
|
f0eb5678c8 | ||
|
|
bd262d3fb6 | ||
|
|
f1a426bd2e | ||
|
|
9fe67f2b97 | ||
|
|
245b5b1e08 | ||
|
|
a3ef9fa59e | ||
|
|
f2ee981953 | ||
|
|
eb666f6a01 | ||
|
|
ad7f01e41e | ||
|
|
c452ebff3c | ||
|
|
a1e71488d8 | ||
|
|
45c8f7ec27 | ||
|
|
67fda15ca9 | ||
|
|
769ab6f72d | ||
|
|
1769e583d8 |
@@ -0,0 +1,40 @@
|
|||||||
|
name: Update flake lock
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
# Gitea cron schedules use UTC. 07:00 UTC is 03:00 EDT.
|
||||||
|
- cron: "0 7 * * 0"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-flake-lock:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install upstream Nix
|
||||||
|
uses: cachix/install-nix-action@v31
|
||||||
|
|
||||||
|
- name: Update flake lock
|
||||||
|
run: nix flake update
|
||||||
|
|
||||||
|
- name: Commit and push changes
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if git diff --quiet -- flake.lock; then
|
||||||
|
echo "flake.lock is already up to date"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
git config user.name "gitea-actions[bot]"
|
||||||
|
git config user.email "gitea-actions[bot]@noreply.localhost"
|
||||||
|
git add flake.lock
|
||||||
|
git commit -m "chore: update flake lock"
|
||||||
|
git push
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
k9s:
|
||||||
|
body:
|
||||||
|
fgColor: '#cdd6f4'
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
logoColor: '#cba6f7'
|
||||||
|
prompt:
|
||||||
|
fgColor: '#cdd6f4'
|
||||||
|
bgColor: '#181825'
|
||||||
|
suggestColor: '#89b4fa'
|
||||||
|
help:
|
||||||
|
fgColor: '#cdd6f4'
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
sectionColor: '#a6e3a1'
|
||||||
|
keyColor: '#89b4fa'
|
||||||
|
numKeyColor: '#eba0ac'
|
||||||
|
frame:
|
||||||
|
title:
|
||||||
|
fgColor: '#94e2d5'
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
highlightColor: '#f5c2e7'
|
||||||
|
counterColor: '#f9e2af'
|
||||||
|
filterColor: '#a6e3a1'
|
||||||
|
border:
|
||||||
|
fgColor: '#cba6f7'
|
||||||
|
focusColor: '#b4befe'
|
||||||
|
menu:
|
||||||
|
fgColor: '#cdd6f4'
|
||||||
|
keyColor: '#89b4fa'
|
||||||
|
numKeyColor: '#eba0ac'
|
||||||
|
crumbs:
|
||||||
|
fgColor: '#1e1e2e'
|
||||||
|
bgColor: '#eba0ac'
|
||||||
|
activeColor: '#f2cdcd'
|
||||||
|
status:
|
||||||
|
newColor: '#89b4fa'
|
||||||
|
modifyColor: '#b4befe'
|
||||||
|
addColor: '#a6e3a1'
|
||||||
|
pendingColor: '#fab387'
|
||||||
|
errorColor: '#f38ba8'
|
||||||
|
highlightColor: '#89dceb'
|
||||||
|
killColor: '#cba6f7'
|
||||||
|
completedColor: '#6c7086'
|
||||||
|
info:
|
||||||
|
fgColor: '#fab387'
|
||||||
|
sectionColor: '#cdd6f4'
|
||||||
|
views:
|
||||||
|
table:
|
||||||
|
fgColor: '#cdd6f4'
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
cursorFgColor: '#313244'
|
||||||
|
cursorBgColor: '#45475a'
|
||||||
|
markColor: '#f5e0dc'
|
||||||
|
header:
|
||||||
|
fgColor: '#f9e2af'
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
sorterColor: '#89dceb'
|
||||||
|
xray:
|
||||||
|
fgColor: '#cdd6f4'
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
cursorColor: '#45475a'
|
||||||
|
cursorTextColor: '#1e1e2e'
|
||||||
|
graphicColor: '#f5c2e7'
|
||||||
|
charts:
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
chartBgColor: '#1e1e2e'
|
||||||
|
dialBgColor: '#1e1e2e'
|
||||||
|
defaultDialColors:
|
||||||
|
- '#a6e3a1'
|
||||||
|
- '#f38ba8'
|
||||||
|
defaultChartColors:
|
||||||
|
- '#a6e3a1'
|
||||||
|
- '#f38ba8'
|
||||||
|
resourceColors:
|
||||||
|
cpu:
|
||||||
|
- '#cba6f7'
|
||||||
|
- '#89b4fa'
|
||||||
|
mem:
|
||||||
|
- '#f9e2af'
|
||||||
|
- '#fab387'
|
||||||
|
yaml:
|
||||||
|
keyColor: '#89b4fa'
|
||||||
|
valueColor: '#cdd6f4'
|
||||||
|
colonColor: '#a6adc8'
|
||||||
|
logs:
|
||||||
|
fgColor: '#cdd6f4'
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
indicator:
|
||||||
|
fgColor: '#b4befe'
|
||||||
|
bgColor: '#1e1e2e'
|
||||||
|
toggleOnColor: '#a6e3a1'
|
||||||
|
toggleOffColor: '#a6adc8'
|
||||||
|
dialog:
|
||||||
|
fgColor: '#f9e2af'
|
||||||
|
bgColor: '#9399b2'
|
||||||
|
buttonFgColor: '#1e1e2e'
|
||||||
|
buttonBgColor: '#7f849c'
|
||||||
|
buttonFocusFgColor: '#1e1e2e'
|
||||||
|
buttonFocusBgColor: '#f5c2e7'
|
||||||
|
labelFgColor: '#f5e0dc'
|
||||||
|
fieldFgColor: '#cdd6f4'
|
||||||
|
|||||||
@@ -12,6 +12,9 @@ return {
|
|||||||
-- { import = "astrocommunity.pack.go "}, -- golang support
|
-- { import = "astrocommunity.pack.go "}, -- golang support
|
||||||
{ import = "astrocommunity.pack.fish" }, -- fish support
|
{ import = "astrocommunity.pack.fish" }, -- fish support
|
||||||
-- { import = "astrocommunity.pack.cs" }, -- csharp/dotnet support
|
-- { import = "astrocommunity.pack.cs" }, -- csharp/dotnet support
|
||||||
|
{ import = "astrocommunity.completion.copilot-lua" }, -- copilot
|
||||||
|
{ import = "astrocommunity.completion.copilot-lua-cmp" }, -- copilot
|
||||||
|
{ import = "astrocommunity.recipes.heirline-mode-text-statusline" }, -- statusline customization
|
||||||
|
|
||||||
-- import/override with your plugins folder
|
-- import/override with your plugins folder
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
local function toggle_tui(cmd, direction, size)
|
||||||
|
local terminal
|
||||||
|
local dir = direction or "float"
|
||||||
|
local term_size = size
|
||||||
|
|
||||||
|
return function()
|
||||||
|
if not terminal then
|
||||||
|
local Terminal = require("toggleterm.terminal").Terminal
|
||||||
|
terminal = Terminal:new {
|
||||||
|
cmd = cmd,
|
||||||
|
hidden = true,
|
||||||
|
close_on_exit = true,
|
||||||
|
direction = dir,
|
||||||
|
on_open = function() vim.cmd "startinsert!" end,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
terminal:toggle(term_size, dir)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local toggle_k9s = toggle_tui "k9s"
|
||||||
|
local toggle_ghdash = toggle_tui "gh-dash"
|
||||||
|
local toggle_ai_opencode = toggle_tui("opencode", "vertical", 80)
|
||||||
|
local toggle_ai_copilot = toggle_tui("copilot", "vertical", 80)
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
"AstroNvim/astrocore",
|
||||||
|
---@type AstroCoreOpts
|
||||||
|
opts = {
|
||||||
|
mappings = {
|
||||||
|
n = {
|
||||||
|
["<Leader>k"] = { desc = "Kubernetes" },
|
||||||
|
["<Leader>ki"] = {
|
||||||
|
toggle_k9s,
|
||||||
|
desc = "K9s",
|
||||||
|
},
|
||||||
|
["<Leader>gD"] = {
|
||||||
|
toggle_ghdash,
|
||||||
|
desc = "GitHub dashboard",
|
||||||
|
},
|
||||||
|
["<Leader>a"] = { desc = "AI" },
|
||||||
|
["<Leader>ao"] = {
|
||||||
|
toggle_ai_opencode,
|
||||||
|
desc = "opencode",
|
||||||
|
},
|
||||||
|
["<Leader>ag"] = {
|
||||||
|
toggle_ai_copilot,
|
||||||
|
desc = "GH Copilot",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,85 +1,10 @@
|
|||||||
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
|
|
||||||
|
|
||||||
-- You can also add or configure plugins by creating files in this `plugins/` folder
|
|
||||||
-- Here are some examples:
|
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
|
{ "nvim-treesitter/nvim-treesitter" },
|
||||||
-- == Examples of Adding Plugins ==
|
{ "neovim/nvim-lspconfig" },
|
||||||
|
{ "kylechui/nvim-surround" },
|
||||||
"andweeb/presence.nvim",
|
{ "nvim-neo-tree/neo-tree.nvim" },
|
||||||
{
|
{ "akinsho/toggleterm.nvim" },
|
||||||
"ray-x/lsp_signature.nvim",
|
{ "nvimtools/none-ls.nvim" },
|
||||||
event = "BufRead",
|
{ "rebelot/heirline.nvim" },
|
||||||
config = function() require("lsp_signature").setup() end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- == Examples of Overriding Plugins ==
|
|
||||||
|
|
||||||
-- customize alpha options
|
|
||||||
{
|
|
||||||
"goolord/alpha-nvim",
|
|
||||||
opts = function(_, opts)
|
|
||||||
-- customize the dashboard header
|
|
||||||
opts.section.header.val = {
|
|
||||||
" █████ ███████ ████████ ██████ ██████",
|
|
||||||
"██ ██ ██ ██ ██ ██ ██ ██",
|
|
||||||
"███████ ███████ ██ ██████ ██ ██",
|
|
||||||
"██ ██ ██ ██ ██ ██ ██ ██",
|
|
||||||
"██ ██ ███████ ██ ██ ██ ██████",
|
|
||||||
" ",
|
|
||||||
" ███ ██ ██ ██ ██ ███ ███",
|
|
||||||
" ████ ██ ██ ██ ██ ████ ████",
|
|
||||||
" ██ ██ ██ ██ ██ ██ ██ ████ ██",
|
|
||||||
" ██ ██ ██ ██ ██ ██ ██ ██ ██",
|
|
||||||
" ██ ████ ████ ██ ██ ██",
|
|
||||||
}
|
|
||||||
return opts
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- You can disable default plugins as follows:
|
|
||||||
{ "max397574/better-escape.nvim", enabled = false },
|
|
||||||
|
|
||||||
-- You can also easily customize additional setup of plugins that is outside of the plugin's setup call
|
|
||||||
{
|
|
||||||
"L3MON4D3/LuaSnip",
|
|
||||||
config = function(plugin, opts)
|
|
||||||
require "astronvim.plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call
|
|
||||||
-- add more custom luasnip configuration such as filetype extend or custom snippets
|
|
||||||
local luasnip = require "luasnip"
|
|
||||||
luasnip.filetype_extend("javascript", { "javascriptreact" })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"windwp/nvim-autopairs",
|
|
||||||
config = function(plugin, opts)
|
|
||||||
require "astronvim.plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call
|
|
||||||
-- add more custom autopairs configuration such as custom rules
|
|
||||||
local npairs = require "nvim-autopairs"
|
|
||||||
local Rule = require "nvim-autopairs.rule"
|
|
||||||
local cond = require "nvim-autopairs.conds"
|
|
||||||
npairs.add_rules(
|
|
||||||
{
|
|
||||||
Rule("$", "$", { "tex", "latex" })
|
|
||||||
-- don't add a pair if the next character is %
|
|
||||||
:with_pair(cond.not_after_regex "%%")
|
|
||||||
-- don't add a pair if the previous character is xxx
|
|
||||||
:with_pair(
|
|
||||||
cond.not_before_regex("xxx", 3)
|
|
||||||
)
|
|
||||||
-- don't move right when repeat character
|
|
||||||
:with_move(cond.none())
|
|
||||||
-- don't delete if the next character is xx
|
|
||||||
:with_del(cond.not_after_regex "xx")
|
|
||||||
-- disable adding a newline when you press <cr>
|
|
||||||
:with_cr(cond.none()),
|
|
||||||
},
|
|
||||||
-- disable for .vim files, but it work for another filetypes
|
|
||||||
Rule("a", "a", "-vim")
|
|
||||||
)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -198,8 +198,8 @@ bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
|||||||
bindsym XF86AudioPlay exec playerctl play-pause
|
bindsym XF86AudioPlay exec playerctl play-pause
|
||||||
bindsym XF86AudioNext exec playerctl next
|
bindsym XF86AudioNext exec playerctl next
|
||||||
bindsym XF86AudioPrev exec playerctl previous
|
bindsym XF86AudioPrev exec playerctl previous
|
||||||
bindsym XF86MonBrightnessUp exec light -A 5
|
bindsym XF86MonBrightnessUp exec brightnessctl set +5%
|
||||||
bindsym XF86MonBrightnessDown exec light -U 5
|
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||||
|
|
||||||
### Lock the screen
|
### Lock the screen
|
||||||
bindsym $mod+Ctrl+q 'swaylock -f -i /home/wyatt/.wallpaper/.wallpaper_lock.png'
|
bindsym $mod+Ctrl+q 'swaylock -f -i /home/wyatt/.wallpaper/.wallpaper_lock.png'
|
||||||
|
|||||||
+14
-6
@@ -2,7 +2,7 @@
|
|||||||
"layer": "top",
|
"layer": "top",
|
||||||
"modules-left": ["sway/workspaces"],
|
"modules-left": ["sway/workspaces"],
|
||||||
"modules-center": ["clock"],
|
"modules-center": ["clock"],
|
||||||
"modules-right": ["custom/playerctl", "custom/weather", "pulseaudio", "network", "tray"],
|
"modules-right": ["custom/playerctl", "custom/weather", "pulseaudio", "custom/network", "custom/ollama", "tray"],
|
||||||
"sway/workspaces": {
|
"sway/workspaces": {
|
||||||
"disable-scroll": true,
|
"disable-scroll": true,
|
||||||
"all-outputs": true,
|
"all-outputs": true,
|
||||||
@@ -34,14 +34,22 @@
|
|||||||
"exec": "wttrbar --fahrenheit --main-indicator 'temp_F' --location 'Grand Rapids'",
|
"exec": "wttrbar --fahrenheit --main-indicator 'temp_F' --location 'Grand Rapids'",
|
||||||
"return-type": "json"
|
"return-type": "json"
|
||||||
},
|
},
|
||||||
"network": {
|
"custom/network": {
|
||||||
"format-wifi": " {essid} ({signalStrength}%)",
|
"format": "{text}",
|
||||||
"format-ethernet": " {ipaddr}",
|
"return-type": "json",
|
||||||
"format-disconnected": "⚠ Disconnected",
|
"exec": "bash $HOME/.config/waybar/network.sh",
|
||||||
"family": "ipv4",
|
"on-click": "bash $HOME/.config/waybar/network.sh toggle",
|
||||||
"interval": 5,
|
"interval": 5,
|
||||||
"tooltip": false
|
"tooltip": false
|
||||||
},
|
},
|
||||||
|
"custom/ollama": {
|
||||||
|
"format": "{text}",
|
||||||
|
"return-type": "json",
|
||||||
|
"exec": "bash $HOME/.config/waybar/ollama.sh",
|
||||||
|
"on-click": "bash $HOME/.config/waybar/ollama.sh toggle",
|
||||||
|
"interval": 2,
|
||||||
|
"tooltip": true
|
||||||
|
},
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
"format": "{icon} {volume}%",
|
"format": "{icon} {volume}%",
|
||||||
"format-bluetooth": "{icon} {volume}%",
|
"format-bluetooth": "{icon} {volume}%",
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -u
|
||||||
|
|
||||||
|
state_dir="${XDG_RUNTIME_DIR:-/tmp}/waybar-${UID}"
|
||||||
|
state_file="$state_dir/public-ip"
|
||||||
|
|
||||||
|
if [[ ${1:-} == toggle ]]; then
|
||||||
|
mkdir -p -m 700 "$state_dir"
|
||||||
|
if [[ -s $state_file ]]; then
|
||||||
|
: > "$state_file"
|
||||||
|
else
|
||||||
|
public_ip=$(curl -4fsS --max-time 5 https://wtfismyip.com/json 2>/dev/null |
|
||||||
|
jq -er '.YourFuckingIPAddress | select(type == "string") | split(".") |
|
||||||
|
select(length == 4 and all(.[]; test("^[0-9]{1,3}$") and (tonumber <= 255))) |
|
||||||
|
join(".")' 2>/dev/null) || exit 0
|
||||||
|
printf '%s\n' "$public_ip" > "$state_file"
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
route=$(ip -4 route get 1.1.1.1 2>/dev/null) || route=
|
||||||
|
if [[ ! $route =~ [[:space:]]dev[[:space:]]([^[:space:]]+) ]]; then
|
||||||
|
jq -cn '{text: "⚠ Disconnected", class: "disconnected"}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
interface=${BASH_REMATCH[1]}
|
||||||
|
if [[ ! $route =~ [[:space:]]src[[:space:]]([0-9.]+) ]]; then
|
||||||
|
jq -cn '{text: "⚠ Disconnected", class: "disconnected"}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
local_ip=${BASH_REMATCH[1]}
|
||||||
|
|
||||||
|
if [[ -s $state_file ]]; then
|
||||||
|
jq -cn --rawfile ip "$state_file" '{text: (" " + ($ip | rtrimstr("\n"))), class: "public"}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $(nmcli -g GENERAL.TYPE device show "$interface" 2>/dev/null) == wifi ]]; then
|
||||||
|
essid=$(nmcli -g GENERAL.CONNECTION device show "$interface" 2>/dev/null | head -n 1)
|
||||||
|
signal=$(nmcli -t -f IN-USE,SIGNAL device wifi list ifname "$interface" --rescan no 2>/dev/null |
|
||||||
|
awk -F: '$1 == "*" { print $2; exit }')
|
||||||
|
if [[ -n $essid && $essid != -- ]]; then
|
||||||
|
text=" $essid"
|
||||||
|
[[ -n $signal ]] && text="${text} (${signal}%)"
|
||||||
|
else
|
||||||
|
text=" $local_ip"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
text=" $local_ip"
|
||||||
|
fi
|
||||||
|
|
||||||
|
jq -cn --arg text "$text" '{text: $text, class: "connected"}'
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -u
|
||||||
|
|
||||||
|
service=ollama.service
|
||||||
|
|
||||||
|
# The shared Waybar config is also used by hosts without Ollama.
|
||||||
|
if ! systemctl --user cat "$service" >/dev/null 2>&1; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${1:-} == toggle ]]; then
|
||||||
|
if systemctl --user is-active --quiet "$service"; then
|
||||||
|
systemctl --user stop "$service"
|
||||||
|
else
|
||||||
|
systemctl --user start "$service"
|
||||||
|
fi
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if systemctl --user is-active --quiet "$service"; then
|
||||||
|
printf '%s\n' '{"text":"<span foreground=\"#9ece6a\">●</span> Local AI","tooltip":"Ollama is running. Click to stop it.","class":"running"}'
|
||||||
|
else
|
||||||
|
printf '%s\n' '{"text":"<span foreground=\"#f7768e\">●</span> Local AI","tooltip":"Ollama is stopped. Click to start it.","class":"stopped"}'
|
||||||
|
fi
|
||||||
@@ -31,11 +31,12 @@ window#waybar {
|
|||||||
#cpu,
|
#cpu,
|
||||||
#memory,
|
#memory,
|
||||||
#pulseaudio,
|
#pulseaudio,
|
||||||
#network,
|
#custom-network,
|
||||||
|
#custom-ollama,
|
||||||
#battery,
|
#battery,
|
||||||
#clock,
|
#clock,
|
||||||
#custom-playerctl {
|
#custom-playerctl {
|
||||||
padding: 0 10px;
|
padding: 0 5px;
|
||||||
margin: 0 5px;
|
margin: 0 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,7 +66,7 @@ window#waybar {
|
|||||||
animation-direction: alternate;
|
animation-direction: alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#network.disconnected {
|
#custom-network.disconnected {
|
||||||
color: #cc241d;
|
color: #cc241d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Generated
+464
-83
@@ -9,11 +9,11 @@
|
|||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771170334,
|
"lastModified": 1789138122,
|
||||||
"narHash": "sha256-tCgoCWORfNHaRXTh2QS44LwxlV8q28jVvjN5ioMicv8=",
|
"narHash": "sha256-mh+ZiGCtHAo0xIi1yaNjHsftfnlWz9JiYwHCyT16yIE=",
|
||||||
"owner": "ezKEa",
|
"owner": "ezKEa",
|
||||||
"repo": "aagl-gtk-on-nix",
|
"repo": "aagl-gtk-on-nix",
|
||||||
"rev": "821b4f92c2c0981ea5b571b03403df87d2b2e2ae",
|
"rev": "d82d6d6f66caf4b63fb154e62fad83c627874127",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -22,6 +22,29 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"caitsith": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-schemas": "flake-schemas",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790492877,
|
||||||
|
"narHash": "sha256-RK9eeRQv9l3pQ8qNCdJ8fpkFCp/+QpNn7lR7Kkfrv8w=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "d3216bbe660f8265f1393ecf263ab5f8662f5a58",
|
||||||
|
"revCount": 26,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/caitsith.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/caitsith.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
"darwin": {
|
"darwin": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -29,16 +52,37 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767634391,
|
"lastModified": 1783744694,
|
||||||
"narHash": "sha256-owcSz2ICqTSvhBbhPP+1eWzi88e54rRZtfCNE5E/wwg=",
|
"narHash": "sha256-2cp6N3rrwnGYLTx9l6N+NI+kwrCWxvJUbj5WJhvB29A=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "08585aacc3d6d6c280a02da195fdbd4b9cf083c2",
|
"rev": "c3e90c89649b07d1a96e4b9dd6cd0d6e44b91a74",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"ref": "nix-darwin-25.11",
|
"ref": "nix-darwin-26.05",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"darwin_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1786845137,
|
||||||
|
"narHash": "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ=",
|
||||||
|
"owner": "LnL7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "LnL7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -59,14 +103,62 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_3": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767039857,
|
||||||
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_4": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1777699697,
|
||||||
|
"narHash": "sha256-Eg9b/rq/ECYwNwEXs5i9wHyhxNI0JrYx2srdI2uZMaQ=",
|
||||||
|
"ref": "refs/heads/main",
|
||||||
|
"rev": "382052b74656a369c5408822af3f2501e9b1af81",
|
||||||
|
"revCount": 94,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.lix.systems/lix-project/flake-compat.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.lix.systems/lix-project/flake-compat.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-schemas": {
|
"flake-schemas": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761577921,
|
"lastModified": 1780327564,
|
||||||
"narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
|
"narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=",
|
||||||
"rev": "47849c7625e223d36766968cc6dc23ba0e135922",
|
"rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6",
|
||||||
"revCount": 107,
|
"revCount": 149,
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
@@ -75,18 +167,165 @@
|
|||||||
},
|
},
|
||||||
"flake-schemas_2": {
|
"flake-schemas_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761577921,
|
"lastModified": 1780327564,
|
||||||
"narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
|
"narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=",
|
||||||
"rev": "47849c7625e223d36766968cc6dc23ba0e135922",
|
"rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6",
|
||||||
"revCount": 107,
|
"revCount": 149,
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
|
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
|
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"go-overlay",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1788267358,
|
||||||
|
"narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "27555e2624241fb116b49095df4caaee85a25691",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"git-hooks_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_3",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"go-overlay",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1788267358,
|
||||||
|
"narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "27555e2624241fb116b49095df4caaee85a25691",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"go-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790872110,
|
||||||
|
"narHash": "sha256-dXrMwUGE/9pT0J7MeW1BuYxpnnPPc52/oLxfqQF/5q8=",
|
||||||
|
"owner": "purpleclay",
|
||||||
|
"repo": "go-overlay",
|
||||||
|
"rev": "8e136930a2a34c501d612f7b7b0ee8806531768f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "purpleclay",
|
||||||
|
"repo": "go-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"go-overlay_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"git-hooks": "git-hooks_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790872110,
|
||||||
|
"narHash": "sha256-dXrMwUGE/9pT0J7MeW1BuYxpnnPPc52/oLxfqQF/5q8=",
|
||||||
|
"owner": "purpleclay",
|
||||||
|
"repo": "go-overlay",
|
||||||
|
"rev": "8e136930a2a34c501d612f7b7b0ee8806531768f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "purpleclay",
|
||||||
|
"repo": "go-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hildibrand": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-schemas": "flake-schemas_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790492923,
|
||||||
|
"narHash": "sha256-pi8p2jRW9pprb0ZFH50/Z9Bxv0bKgddMXbLZ0D03L3w=",
|
||||||
|
"ref": "refs/heads/master",
|
||||||
|
"rev": "580082101efc0807637529e539886ee6c5f95672",
|
||||||
|
"revCount": 15,
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/hildibrand.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/hildibrand.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -94,20 +333,56 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770260404,
|
"lastModified": 1790996401,
|
||||||
"narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
|
"narHash": "sha256-f+kOxEmOUnQazVAmGg0i8hzwgd1kX/geY+k/Dpheye8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
|
"rev": "db7d5e2332710f5abb088f6b5de927d7f9511b35",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-25.11",
|
"ref": "release-26.05",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"home-manager_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790989254,
|
||||||
|
"narHash": "sha256-ZN+riaeFuE+DZ5zfqJiXlM12jLwZzeIXiNkU1YeHMXI=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "acd21c5a3420a9d5fd0ed06299b10828267ef9ba",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mnw": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1784154424,
|
||||||
|
"narHash": "sha256-HRn4O1X2ShYtbq5Egji72/aemyc2cIQicjRZD9hBqM8=",
|
||||||
|
"owner": "Gerg-L",
|
||||||
|
"repo": "mnw",
|
||||||
|
"rev": "0151d9fa87992cbeb67c86616fb9170dcec830b6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Gerg-L",
|
||||||
|
"repo": "mnw",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nix-flatpak": {
|
"nix-flatpak": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1739444422,
|
"lastModified": 1739444422,
|
||||||
@@ -126,37 +401,66 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744536153,
|
"lastModified": 1789286504,
|
||||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
"narHash": "sha256-eiEK7cKZORNEvX0GeF3RtNEF/JXhgf2RqSp3230q13E=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
"rev": "ef34387ddd751e1ab8857adf4676492d32eb24ec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771043024,
|
"lastModified": 1790920529,
|
||||||
"narHash": "sha256-O1XDr7EWbRp+kHrNNgLWgIrB0/US5wvw9K6RERWAj6I=",
|
"narHash": "sha256-nQyFkMR78WP6PiXKkDW2SjqzLf/spQqjRuxRGSbcV8k=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3aadb7ca9eac2891d52a9dec199d9580a6e2bf44",
|
"rev": "774debe7a0d1b496e35677ad955a1011c6ff74f3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-25.11",
|
"ref": "nixos-26.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790920529,
|
||||||
|
"narHash": "sha256-nQyFkMR78WP6PiXKkDW2SjqzLf/spQqjRuxRGSbcV8k=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "774debe7a0d1b496e35677ad955a1011c6ff74f3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-26.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1790046670,
|
||||||
|
"narHash": "sha256-OJe62m8gZx4xEAQnMcqH1u31/uu4Xf0q2ykAEHZfgrg=",
|
||||||
|
"rev": "6774f7bc253789b113a4f39285dc0fa100abeacc",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1077996.6774f7bc2537/nixexprs.tar.xz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744536153,
|
"lastModified": 1744536153,
|
||||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||||
@@ -172,56 +476,76 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nur": {
|
||||||
|
"inputs": {
|
||||||
|
"caitsith": "caitsith",
|
||||||
|
"darwin": "darwin_2",
|
||||||
|
"go-overlay": "go-overlay_2",
|
||||||
|
"hildibrand": "hildibrand",
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"rust-overlay": "rust-overlay_4"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766201043,
|
"lastModified": 1791097561,
|
||||||
"narHash": "sha256-eplAP+rorKKd0gNjV3rA6+0WMzb1X1i16F5m5pASnjA=",
|
"narHash": "sha256-AmeVVy0WbW/y/sZv7ZGYn3dY6HuHPqvUgYorahAe4lM=",
|
||||||
"rev": "b3aad468604d3e488d627c0b43984eb60e75e782",
|
"ref": "refs/heads/master",
|
||||||
"revCount": 904049,
|
"rev": "55e8c40fbcd0c848c38002fdefb37de7084715be",
|
||||||
"type": "tarball",
|
"revCount": 107,
|
||||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.904049%2Brev-b3aad468604d3e488d627c0b43984eb60e75e782/019b3f6c-8b33-7edb-b858-9979590f270b/source.tar.gz"
|
"type": "git",
|
||||||
|
"url": "https://scm.wyattjmiller.com/wymiller/nur.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "git",
|
||||||
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A"
|
"url": "https://scm.wyattjmiller.com/wymiller/nur.git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nvf": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_4",
|
||||||
|
"mnw": "mnw",
|
||||||
|
"nixpkgs": "nixpkgs_4"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769089682,
|
"lastModified": 1790797021,
|
||||||
"narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
|
"narHash": "sha256-H2vA5yUaS58Wtdp46piMbRqSQe3Qn716i/oZPYoyhp8=",
|
||||||
"rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
|
"owner": "notashelf",
|
||||||
"revCount": 906333,
|
"repo": "nvf",
|
||||||
"type": "tarball",
|
"rev": "2477cb0a5f394df36ddc72867c2657225d93d157",
|
||||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.906333%2Brev-078d69f03934859a181e81ba987c2bb033eebfc5/019bebf2-031c-7119-8fdc-ce9d29d005fa/source.tar.gz"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"owner": "notashelf",
|
||||||
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A"
|
"repo": "nvf",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"aagl": "aagl",
|
"aagl": "aagl",
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
|
"go-overlay": "go-overlay",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nix-flatpak": "nix-flatpak",
|
"nix-flatpak": "nix-flatpak",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"rust-overlay": "rust-overlay_2",
|
"nur": "nur",
|
||||||
"swaytreesave": "swaytreesave",
|
"nvf": "nvf",
|
||||||
"vintage-story": "vintage-story"
|
"rust-overlay": "rust-overlay_5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": [
|
||||||
|
"aagl",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770952264,
|
"lastModified": 1785476452,
|
||||||
"narHash": "sha256-CjymNrJZWBtpavyuTkfPVPaZkwzIzGaf0E/3WgcwM14=",
|
"narHash": "sha256-/CXwCFPS41rb/JI2VitKCgVK6V5E6/sfw5ke3B9zyVQ=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "ec6a3d5cdf14bb5a1dd03652bd3f6351004d2188",
|
"rev": "6ef009bf4c4873cdc1a621826722bdea7c03e62c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -232,14 +556,18 @@
|
|||||||
},
|
},
|
||||||
"rust-overlay_2": {
|
"rust-overlay_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"caitsith",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771211437,
|
"lastModified": 1790407471,
|
||||||
"narHash": "sha256-lcNK438i4DGtyA+bPXXyVLHVmJjYpVKmpux9WASa3ro=",
|
"narHash": "sha256-M8elY2UShg4ZuLTiRLEHO+ae5xQFp3/ReQdxp/R+1UU=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "c62195b3d6e1bb11e0c2fb2a494117d3b55d410f",
|
"rev": "4e9bb05a9ab6c37dc74c22974ebed6e36dc73eb2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -248,42 +576,95 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"swaytreesave": {
|
"rust-overlay_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-schemas": "flake-schemas",
|
"nixpkgs": [
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nur",
|
||||||
|
"hildibrand",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767148467,
|
"lastModified": 1790407471,
|
||||||
"narHash": "sha256-W0O7SWq8ucokt4ctEAEvRvNoSM/oF7fBfb2kTN+lwTs=",
|
"narHash": "sha256-M8elY2UShg4ZuLTiRLEHO+ae5xQFp3/ReQdxp/R+1UU=",
|
||||||
"ref": "refs/heads/master",
|
"owner": "oxalica",
|
||||||
"rev": "0f4bb9bb450b28aa4f29d5eb2062deac6c26687a",
|
"repo": "rust-overlay",
|
||||||
"revCount": 4,
|
"rev": "4e9bb05a9ab6c37dc74c22974ebed6e36dc73eb2",
|
||||||
"type": "git",
|
"type": "github"
|
||||||
"url": "https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"owner": "oxalica",
|
||||||
"url": "https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git"
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"vintage-story": {
|
"rust-overlay_4": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1791013993,
|
||||||
|
"narHash": "sha256-BiFPwFsbFnZH5GfWbQFKYuQNg+67aNQCoRSRNTeJFQc=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "7470661ba2b51156048af08464b82020223dc942",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay_5": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-schemas": "flake-schemas_2",
|
|
||||||
"nixpkgs": "nixpkgs_5"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769397199,
|
"lastModified": 1791013993,
|
||||||
"narHash": "sha256-MSajncUGZtlpl88rqFdj42eGGyWnk2jw84VbK3AgUBA=",
|
"narHash": "sha256-BiFPwFsbFnZH5GfWbQFKYuQNg+67aNQCoRSRNTeJFQc=",
|
||||||
"ref": "refs/heads/master",
|
"owner": "oxalica",
|
||||||
"rev": "4d2313c50933645040a0d12556016fc2916bfa65",
|
"repo": "rust-overlay",
|
||||||
"revCount": 1,
|
"rev": "7470661ba2b51156048af08464b82020223dc942",
|
||||||
"type": "git",
|
"type": "github"
|
||||||
"url": "https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "git",
|
"owner": "oxalica",
|
||||||
"url": "https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git"
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,25 +1,24 @@
|
|||||||
{
|
{
|
||||||
description = "Wyatt's nix configuration suite";
|
description = "Wyatt's nix configuration suite";
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||||
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
|
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-25.11";
|
url = "github:nix-community/home-manager/release-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
darwin = {
|
darwin = {
|
||||||
url = "github:lnl7/nix-darwin/nix-darwin-25.11";
|
url = "github:lnl7/nix-darwin/nix-darwin-26.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
rust-overlay.url = "github:oxalica/rust-overlay";
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
|
go-overlay.url = "github:purpleclay/go-overlay";
|
||||||
aagl = {
|
aagl = {
|
||||||
url = "github:ezKEa/aagl-gtk-on-nix";
|
url = "github:ezKEa/aagl-gtk-on-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
nvf.url = "github:notashelf/nvf";
|
||||||
# My personal flakes
|
nur.url = "git+https://scm.wyattjmiller.com/wymiller/nur.git";
|
||||||
swaytreesave.url = "git+https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git";
|
|
||||||
vintage-story.url = "git+https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
@@ -29,26 +28,32 @@
|
|||||||
darwin,
|
darwin,
|
||||||
home-manager,
|
home-manager,
|
||||||
rust-overlay,
|
rust-overlay,
|
||||||
|
go-overlay,
|
||||||
aagl,
|
aagl,
|
||||||
swaytreesave,
|
nur,
|
||||||
vintage-story,
|
nvf,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
userName = "wyatt";
|
userName = "wyatt";
|
||||||
userEmail = "wyatt@wyattjmiller.com";
|
userEmail = "wyatt@wyattjmiller.com";
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit userName userEmail swaytreesave;
|
inherit userName userEmail nur nvf;
|
||||||
};
|
};
|
||||||
|
|
||||||
myOverlays = { ... }: {
|
myOverlays = { ... }: {
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
rust-overlay.overlays.default
|
rust-overlay.overlays.default
|
||||||
|
go-overlay.overlays.default
|
||||||
aagl.overlays.default
|
aagl.overlays.default
|
||||||
self.common.overlays
|
self.common.overlays
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
meta = import ./meta;
|
meta = import ./meta;
|
||||||
|
formatter = nixpkgs.lib.genAttrs [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
] (system: nixpkgs.legacyPackages.${system}.nixfmt);
|
||||||
|
|
||||||
common = {
|
common = {
|
||||||
overlays = import ./modules/common/overlays.nix;
|
overlays = import ./modules/common/overlays.nix;
|
||||||
@@ -83,7 +88,7 @@
|
|||||||
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
|
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit userName userEmail aagl vintage-story;
|
inherit userName userEmail aagl nur;
|
||||||
hostname = "cloud";
|
hostname = "cloud";
|
||||||
role = "workstation";
|
role = "workstation";
|
||||||
};
|
};
|
||||||
@@ -123,7 +128,7 @@
|
|||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.extraSpecialArgs = extraSpecialArgs;
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "workstation"; };
|
||||||
home-manager.backupFileExtension = "bak";
|
home-manager.backupFileExtension = "bak";
|
||||||
home-manager.users.${userName}.imports = [
|
home-manager.users.${userName}.imports = [
|
||||||
./home
|
./home
|
||||||
@@ -162,10 +167,63 @@
|
|||||||
# ];
|
# ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Vintage story server
|
||||||
|
nixosConfigurations."thancred" = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail nur;
|
||||||
|
hostname = "thancred";
|
||||||
|
role = "server";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
myOverlays
|
||||||
|
./modules/common
|
||||||
|
./modules/machine/thancred
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; };
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
|
home-manager.users.${userName}.imports = [
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Vintage story server - for a friend
|
||||||
|
nixosConfigurations."raubahn" = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail nur;
|
||||||
|
hostname = "raubahn";
|
||||||
|
role = "server";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
myOverlays
|
||||||
|
./modules/common
|
||||||
|
./modules/machine/raubahn
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; };
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
|
home-manager.users.${userName}.imports = [
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Matrix and Mastodon server
|
||||||
nixosConfigurations."yshtola" = nixpkgs.lib.nixosSystem {
|
nixosConfigurations."yshtola" = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit userName userEmail;
|
inherit userName userEmail nur;
|
||||||
hostname = "yshtola";
|
hostname = "yshtola";
|
||||||
role = "server";
|
role = "server";
|
||||||
};
|
};
|
||||||
@@ -187,6 +245,32 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Discord bot server
|
||||||
|
nixosConfigurations."estinien" = nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit userName userEmail nur;
|
||||||
|
hostname = "estinien";
|
||||||
|
role = "server";
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
myOverlays
|
||||||
|
./modules/common
|
||||||
|
./modules/machine/estinien
|
||||||
|
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; };
|
||||||
|
home-manager.backupFileExtension = "bak";
|
||||||
|
home-manager.users.${userName}.imports = [
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
# generic non-NixOS Linux machine
|
# generic non-NixOS Linux machine
|
||||||
homeConfigurations."generic" = let
|
homeConfigurations."generic" = let
|
||||||
hostname = builtins.getEnv "HOSTNAME";
|
hostname = builtins.getEnv "HOSTNAME";
|
||||||
@@ -195,7 +279,7 @@
|
|||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit userName userEmail hostname;
|
inherit userName userEmail hostname nvf;
|
||||||
isNixOS = false;
|
isNixOS = false;
|
||||||
role = "workstation";
|
role = "workstation";
|
||||||
};
|
};
|
||||||
@@ -203,6 +287,7 @@
|
|||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
rust-overlay.overlays.default
|
rust-overlay.overlays.default
|
||||||
|
go-overlay.overlays.default
|
||||||
self.common.overlays
|
self.common.overlays
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, pkgs
|
, pkgs
|
||||||
, userName
|
, userName
|
||||||
, swaytreesave
|
|
||||||
, isNixOS ? true
|
|
||||||
, ...
|
, ...
|
||||||
}: let
|
}: let
|
||||||
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
|
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
|
||||||
@@ -32,19 +30,6 @@ in
|
|||||||
stateVersion = "24.11";
|
stateVersion = "24.11";
|
||||||
}
|
}
|
||||||
|
|
||||||
(lib.mkIf isNixOS {
|
|
||||||
sessionVariables = {
|
|
||||||
XDG_CURRENT_DESKTOP = "sway";
|
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
XDG_SESSION_DESKTOP = "sway";
|
|
||||||
XDG_CONFIG_HOME = "$HOME/.config";
|
|
||||||
XDG_CACHE_HOME = "$HOME/.cache";
|
|
||||||
XDG_DATA_HOME = "$HOME/.local/share";
|
|
||||||
XDG_STATE_HOME = "$HOME/.local/state";
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf pkgs.stdenv.isLinux {
|
(lib.mkIf pkgs.stdenv.isLinux {
|
||||||
pointerCursor = {
|
pointerCursor = {
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
|
|||||||
+12
-2
@@ -13,11 +13,15 @@
|
|||||||
userEmail = userEmail;
|
userEmail = userEmail;
|
||||||
|
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
|
commit.gpgsign = true;
|
||||||
|
gpg.format = "ssh";
|
||||||
|
gpg.ssh.allowedSignersFile = "~/.config/git/allowed_signers";
|
||||||
init.defaultBranch = "master";
|
init.defaultBranch = "master";
|
||||||
push.autoSetupRemote = true;
|
|
||||||
pull.rebase = false;
|
|
||||||
merge.tool = "nvimdiff";
|
merge.tool = "nvimdiff";
|
||||||
mergetool.keepBackup = false;
|
mergetool.keepBackup = false;
|
||||||
|
push.autoSetupRemote = true;
|
||||||
|
pull.rebase = false;
|
||||||
|
user.signingkey = "~/.ssh/id_ed25519_sk.pub";
|
||||||
};
|
};
|
||||||
|
|
||||||
ignores = [
|
ignores = [
|
||||||
@@ -31,6 +35,7 @@
|
|||||||
a = "add";
|
a = "add";
|
||||||
ap = "add -p";
|
ap = "add -p";
|
||||||
br = "branch";
|
br = "branch";
|
||||||
|
cb = "checkout -b";
|
||||||
co = "checkout";
|
co = "checkout";
|
||||||
st = "status -sb";
|
st = "status -sb";
|
||||||
status = "status -sb";
|
status = "status -sb";
|
||||||
@@ -40,6 +45,11 @@
|
|||||||
ca = "commit -am";
|
ca = "commit -am";
|
||||||
dc = "diff --cached";
|
dc = "diff --cached";
|
||||||
amend = "commit --amend -m";
|
amend = "commit --amend -m";
|
||||||
|
wipe = "reset --hard";
|
||||||
|
gg = "reset --hard";
|
||||||
|
ggs = "reset --hard";
|
||||||
|
sw = "switch";
|
||||||
|
r = "restore";
|
||||||
|
|
||||||
# aliases for submodules
|
# aliases for submodules
|
||||||
update = "submodule update --init --recursive";
|
update = "submodule update --init --recursive";
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@
|
|||||||
liveViewAutoRefresh = false;
|
liveViewAutoRefresh = false;
|
||||||
apiServerTimeout = "30s";
|
apiServerTimeout = "30s";
|
||||||
maxConnRetry = 5;
|
maxConnRetry = 5;
|
||||||
readOnly = true;
|
# readOnly = true;
|
||||||
noExitOnCtrlC = false;
|
noExitOnCtrlC = false;
|
||||||
portForwardAddress = "localhost";
|
portForwardAddress = "localhost";
|
||||||
skipLatestRevCheck = false;
|
skipLatestRevCheck = false;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package = pkgs.lazygitLatest;
|
package = pkgs.lazygitLatest;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
gui.skipDiscardChangeWarning = true;
|
||||||
gui.theme = {
|
gui.theme = {
|
||||||
activeBorderColor = ["#a6e3a1" "bold"];
|
activeBorderColor = ["#a6e3a1" "bold"];
|
||||||
inactiveBorderColor = ["#a6adc8"];
|
inactiveBorderColor = ["#a6adc8"];
|
||||||
|
|||||||
+111
-14
@@ -1,18 +1,115 @@
|
|||||||
{...}: let
|
{ nvf, ... }: {
|
||||||
dirs = {
|
imports = [
|
||||||
defaults = ../defaults;
|
nvf.homeManagerModules.default
|
||||||
};
|
];
|
||||||
in {
|
|
||||||
programs.neovim = {
|
|
||||||
enable = true;
|
|
||||||
defaultEditor = true;
|
|
||||||
vimAlias = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = {
|
programs.nvf = {
|
||||||
nvim = {
|
enable = true;
|
||||||
onChange = "nvim --headless -c 'if exists(\":LuaCacheClear\") | :LuaCacheClear' +quitall";
|
settings = {
|
||||||
source = dirs.defaults + /nvim;
|
vim = {
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
lsp.enable = true;
|
||||||
|
treesitter.enable = true;
|
||||||
|
autocomplete.nvim-cmp.enable = true;
|
||||||
|
autopairs.nvim-autopairs.enable = true;
|
||||||
|
|
||||||
|
languages = {
|
||||||
|
nix.enable = true;
|
||||||
|
rust.enable = true;
|
||||||
|
go.enable = true;
|
||||||
|
python.enable = true;
|
||||||
|
markdown.enable = true;
|
||||||
|
css.enable = true;
|
||||||
|
scss.enable = true;
|
||||||
|
tsx.enable = true;
|
||||||
|
typescript = {
|
||||||
|
enable = true;
|
||||||
|
lsp.servers = [ "typescript-language-server" "deno" ];
|
||||||
|
};
|
||||||
|
csharp = {
|
||||||
|
enable = true;
|
||||||
|
lsp.servers = [ "omnisharp" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
utility.surround.enable = true;
|
||||||
|
telescope.enable = true;
|
||||||
|
mini.icons.enable = true;
|
||||||
|
notes.obsidian = {
|
||||||
|
enable = true;
|
||||||
|
setupOpts.workspaces = [
|
||||||
|
{
|
||||||
|
name = "personal";
|
||||||
|
path = "~/Documents/Obsidian/notes";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
terminal.toggleterm = {
|
||||||
|
enable = true;
|
||||||
|
lazygit = {
|
||||||
|
enable = true;
|
||||||
|
mappings.open = "<leader>gg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
filetree.neo-tree.enable = true;
|
||||||
|
binds.whichKey.enable = true;
|
||||||
|
|
||||||
|
clipboard = {
|
||||||
|
enable = true;
|
||||||
|
registers = "unnamedplus";
|
||||||
|
providers = {
|
||||||
|
wl-copy.enable = true;
|
||||||
|
xclip.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lsp.null-ls = {
|
||||||
|
enable = true;
|
||||||
|
setupOpts = {};
|
||||||
|
};
|
||||||
|
lsp.trouble.enable = true;
|
||||||
|
|
||||||
|
theme = {
|
||||||
|
enable = true;
|
||||||
|
name = "catppuccin";
|
||||||
|
style = "mocha";
|
||||||
|
transparent = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
dashboard.alpha.enable = true;
|
||||||
|
|
||||||
|
statusline.lualine.enable = true;
|
||||||
|
tabline.nvimBufferline.enable = true;
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
{
|
||||||
|
key = "<C-s>";
|
||||||
|
mode = "n";
|
||||||
|
action = "<cmd>w<CR>";
|
||||||
|
silent = true;
|
||||||
|
noremap = true;
|
||||||
|
}
|
||||||
|
{ key = "<leader>o"; mode = "n"; action = "<cmd>Neotree toggle<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>tf"; mode = "n"; action = "<cmd>ToggleTerm direction=float<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>th"; mode = "n"; action = "<cmd>ToggleTerm direction=horizontal<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>tv"; mode = "n"; action = "<cmd>ToggleTerm direction=vertical<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>n"; mode = "n"; action = "<nop>"; desc = "Notes"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>nd"; mode = "n"; action = "<cmd>Obsidian today<CR>"; desc = "Obsidian daily note"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>nf"; mode = "n"; action = "<cmd>Obsidian quick_switch<CR>"; desc = "Obsidian find note"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>ns"; mode = "n"; action = "<cmd>Obsidian search<CR>"; desc = "Obsidian search notes"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>nn"; mode = "n"; action = "<cmd>Obsidian new<CR>"; desc = "Obsidian new note"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>ff"; mode = "n"; action = "<cmd>Telescope find_files<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>fD"; mode = "n"; action = "<cmd>lua require('telescope.builtin').find_files({ cwd = vim.fn.input('Dir: ', vim.loop.cwd() .. '/', 'dir') })<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>fg"; mode = "n"; action = "<cmd>Telescope live_grep<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>/"; mode = "n"; action = "<cmd>Telescope current_buffer_fuzzy_find<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>gb"; mode = "n"; action = "<cmd>Telescope git_branches<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>gc"; mode = "n"; action = "<cmd>Telescope git_commits<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>gl"; mode = "n"; action = "<cmd>Telescope git_bcommits<CR>"; silent = true; noremap = true; }
|
||||||
|
{ key = "<leader>gr"; mode = "n"; action = "<cmd>Telescope git_status<CR>"; silent = true; noremap = true; }
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-1
@@ -1,4 +1,21 @@
|
|||||||
{ lib, pkgs, isNixOS ? true, ... }:
|
{ lib, pkgs, isNixOS ? true, ... }:
|
||||||
lib.mkIf pkgs.stdenv.isLinux {
|
lib.mkIf pkgs.stdenv.isLinux {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
imv
|
||||||
|
xdg-utils
|
||||||
|
] ++ lib.optionals isNixOS [
|
||||||
|
vesktop
|
||||||
|
thunar
|
||||||
|
thunar-volman
|
||||||
|
thunar-shares-plugin
|
||||||
|
thunar-vcs-plugin
|
||||||
|
thunar-archive-plugin
|
||||||
|
thunar-media-tags-plugin
|
||||||
|
pavucontrol
|
||||||
|
zathura
|
||||||
|
gpu-screen-recorder
|
||||||
|
gpu-screen-recorder-gtk
|
||||||
|
inetutils
|
||||||
|
easyeffects
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
fh
|
fh
|
||||||
kubectl # kube config is deliberately not included
|
kubectl # kube config is deliberately not included
|
||||||
kubectx
|
kubectx
|
||||||
obsidian
|
|
||||||
vscode
|
vscode
|
||||||
yt-dlp
|
yt-dlp
|
||||||
weechat
|
weechat
|
||||||
@@ -29,5 +28,10 @@
|
|||||||
deadnix
|
deadnix
|
||||||
alejandra
|
alejandra
|
||||||
statix
|
statix
|
||||||
|
gh
|
||||||
|
ghDashLatest
|
||||||
|
diffNavLatest
|
||||||
|
] ++ lib.optionals isNixOS [
|
||||||
|
obsidian
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-3
@@ -31,7 +31,6 @@
|
|||||||
body = ''
|
body = ''
|
||||||
set memes \
|
set memes \
|
||||||
"Crazy? I was crazy once. They locked me in a room. A rubber room. A rubber room with rats. And rats make me crazy." \
|
"Crazy? I was crazy once. They locked me in a room. A rubber room. A rubber room with rats. And rats make me crazy." \
|
||||||
"Daddy, chill!" \
|
|
||||||
"What the hell is even that?!" \
|
"What the hell is even that?!" \
|
||||||
"Road work ahead? Yeah, I sure hope it does!" \
|
"Road work ahead? Yeah, I sure hope it does!" \
|
||||||
"Look at all those chickens!" \
|
"Look at all those chickens!" \
|
||||||
@@ -40,7 +39,6 @@
|
|||||||
"I didn't get no sleep cause of y'all, y'all not gone get any sleep cause of me!" \
|
"I didn't get no sleep cause of y'all, y'all not gone get any sleep cause of me!" \
|
||||||
"This is the dollar store, how good can it be?" \
|
"This is the dollar store, how good can it be?" \
|
||||||
"That was legitness" \
|
"That was legitness" \
|
||||||
"Deez nuts" \
|
|
||||||
"I wanna be a cowboy baby" \
|
"I wanna be a cowboy baby" \
|
||||||
"Can I get a waffle? Can I please get a waffle?" \
|
"Can I get a waffle? Can I please get a waffle?" \
|
||||||
"I'm lesbian. I thought you were American." \
|
"I'm lesbian. I thought you were American." \
|
||||||
@@ -62,7 +60,13 @@
|
|||||||
"If you’ve brought your ivory standard, I’ll be happy to tell you where you can stick it" \
|
"If you’ve brought your ivory standard, I’ll be happy to tell you where you can stick it" \
|
||||||
"Speeches? Oh, yes, I love them. There's nothing like a good exposition when you're having trouble sleeping!" \
|
"Speeches? Oh, yes, I love them. There's nothing like a good exposition when you're having trouble sleeping!" \
|
||||||
"Somehow, the boy just isn't very buoyant" \
|
"Somehow, the boy just isn't very buoyant" \
|
||||||
"I am...not interested, little sun. Try again when you have become a man"
|
"I am...not interested, little sun. Try again when you have become a man" \
|
||||||
|
"I am rightousness! And rightousness shall previal!" \
|
||||||
|
"Ahhh such bliss!" \
|
||||||
|
"The gods themselves will be my meal. Your dear companions my dessert. Upon this world I'll feast, and death shall follow in my wake. All your hate, all your rage, you will render unto me." \
|
||||||
|
"Boring, boring, boring" \
|
||||||
|
"Would you be 'happier' had I a 'good reason'?" \
|
||||||
|
"A test of your reflexes!"
|
||||||
|
|
||||||
|
|
||||||
set choose_meme (random)"%"(count $memes)
|
set choose_meme (random)"%"(count $memes)
|
||||||
|
|||||||
+7
-4
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
swaytreesave,
|
nur,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
dirs = {
|
dirs = {
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
swaytreesave.homeManagerModules.default
|
nur.homeManagerModules.swaytreesave
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.swaytreesave.enable = if pkgs.stdenv.isLinux then true else false;
|
programs.swaytreesave.enable = if pkgs.stdenv.isLinux then true else false;
|
||||||
@@ -36,6 +36,10 @@ in {
|
|||||||
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
|
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
|
||||||
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
|
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
|
||||||
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
|
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
|
||||||
|
xdg.configFile."waybar/network.sh".source = dirs.defaults + /waybar/network.sh;
|
||||||
|
xdg.configFile."waybar/ollama.sh".source = dirs.defaults + /waybar/ollama.sh;
|
||||||
|
|
||||||
|
home.packages = with pkgs; [ curl iproute2 networkmanager ];
|
||||||
|
|
||||||
programs.wofi = {
|
programs.wofi = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
@@ -153,7 +157,6 @@ in {
|
|||||||
|
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
systemd.enable = true;
|
systemd.enable = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-14
@@ -3,7 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
aagl,
|
aagl,
|
||||||
vintage-story,
|
nur,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.gaming;
|
cfg = config.gaming;
|
||||||
@@ -76,6 +76,16 @@ in {
|
|||||||
enable = lib.mkEnableOption "OpenGL/Vulkan overlay tool shown in games presenting FPS, CPU/GPU/memory utilization, load, etc.";
|
enable = lib.mkEnableOption "OpenGL/Vulkan overlay tool shown in games presenting FPS, CPU/GPU/memory utilization, load, etc.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
proton = {
|
||||||
|
enable = lib.mkEnableOption "Proton compatibility tool management";
|
||||||
|
|
||||||
|
manager = lib.mkOption {
|
||||||
|
type = lib.types.enum ["protonplus" "protonup-qt"];
|
||||||
|
default = "protonup-qt";
|
||||||
|
description = "Graphical Proton compatibility tool manager to install";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
lutris = {
|
lutris = {
|
||||||
enable = lib.mkEnableOption "Lutris game manager and launcher";
|
enable = lib.mkEnableOption "Lutris game manager and launcher";
|
||||||
package = lib.mkOption {
|
package = lib.mkOption {
|
||||||
@@ -93,14 +103,7 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Compatibility layers for Lutris
|
|
||||||
compatibility = {
|
compatibility = {
|
||||||
protonSupport = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = true;
|
|
||||||
description = "Enable Proton-like compatibility layers for Lutris";
|
|
||||||
};
|
|
||||||
|
|
||||||
extraTools = lib.mkOption {
|
extraTools = lib.mkOption {
|
||||||
type = lib.types.listOf lib.types.package;
|
type = lib.types.listOf lib.types.package;
|
||||||
default = [];
|
default = [];
|
||||||
@@ -149,13 +152,31 @@ in {
|
|||||||
vintage-story = {
|
vintage-story = {
|
||||||
enable = lib.mkEnableOption "Vintage Story client and server";
|
enable = lib.mkEnableOption "Vintage Story client and server";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
archon = {
|
||||||
|
enable = lib.mkEnableOption "Archon from NUR";
|
||||||
|
};
|
||||||
|
|
||||||
|
opengoal = {
|
||||||
|
enable = lib.mkEnableOption "OpenGOAL, a game engine used in a certain PlayStation 2 franchise";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
agl = cfg.aagl;
|
agl = cfg.aagl;
|
||||||
|
nurPkgs = import "${nur.outPath}/pkgs" { inherit pkgs; };
|
||||||
|
protonManager = {
|
||||||
|
protonplus = pkgs.protonplus;
|
||||||
|
protonup-qt = pkgs.protonup-qt;
|
||||||
|
}.${cfg.proton.manager};
|
||||||
in {
|
in {
|
||||||
programs.steam = lib.mkIf cfg.steam.enable {
|
programs.steam = lib.mkIf cfg.steam.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
gamescope
|
||||||
|
gamemode
|
||||||
|
];
|
||||||
|
|
||||||
remotePlay.openFirewall = cfg.steam.firewall.remotePlay;
|
remotePlay.openFirewall = cfg.steam.firewall.remotePlay;
|
||||||
localNetworkGameTransfers.openFirewall = cfg.steam.firewall.localNetworkGameTransfers;
|
localNetworkGameTransfers.openFirewall = cfg.steam.firewall.localNetworkGameTransfers;
|
||||||
};
|
};
|
||||||
@@ -209,16 +230,14 @@ in {
|
|||||||
cfg.lutris.wine.package
|
cfg.lutris.wine.package
|
||||||
pkgs.winetricks
|
pkgs.winetricks
|
||||||
]) ++
|
]) ++
|
||||||
(lib.optionals cfg.lutris.compatibility.protonSupport [
|
|
||||||
pkgs.protonup-ng
|
|
||||||
pkgs.protonup-qt
|
|
||||||
]) ++
|
|
||||||
cfg.lutris.compatibility.extraTools ++
|
cfg.lutris.compatibility.extraTools ++
|
||||||
cfg.lutris.extraPackages
|
cfg.lutris.extraPackages
|
||||||
)) ++
|
)) ++
|
||||||
|
(lib.optionals cfg.proton.enable [protonManager]) ++
|
||||||
(lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++
|
(lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++
|
||||||
(lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++
|
(lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++
|
||||||
(lib.optionals cfg.vintage-story.enable [vintage-story.packages.${pkgs.system}.default]) ++
|
(lib.optionals cfg.vintage-story.enable [nurPkgs.vintage-story]) ++
|
||||||
|
(lib.optionals cfg.archon.enable [nurPkgs.archon]) ++
|
||||||
(lib.optionals cfg.vkbasalt.enable [pkgs.vkbasalt pkgs.vkbasalt-cli]) ++
|
(lib.optionals cfg.vkbasalt.enable [pkgs.vkbasalt pkgs.vkbasalt-cli]) ++
|
||||||
(lib.optionals cfg.mangohud.enable [pkgs.mangohud]) ++
|
(lib.optionals cfg.mangohud.enable [pkgs.mangohud]) ++
|
||||||
(lib.optionals (cfg.vkbasalt.enable || cfg.mangohud.enable) [pkgs.goverlay pkgs.mesa-demos pkgs.vulkan-tools]);
|
(lib.optionals (cfg.vkbasalt.enable || cfg.mangohud.enable) [pkgs.goverlay pkgs.mesa-demos pkgs.vulkan-tools]);
|
||||||
@@ -226,7 +245,7 @@ in {
|
|||||||
nix.settings = let
|
nix.settings = let
|
||||||
inherit agl;
|
inherit agl;
|
||||||
in (lib.mkIf
|
in (lib.mkIf
|
||||||
(agl.anime-game-launcher.enable || agl.honkers-railway-laucher.enable || agl.honkers-launcher.enable || agl.wavey-launcher.enable || agl.sleepy-launcher.enable)
|
(agl.anime-game-launcher.enable || agl.honkers-railway-launcher.enable || agl.honkers-launcher.enable || agl.wavey-launcher.enable || agl.sleepy-launcher.enable)
|
||||||
{
|
{
|
||||||
substituters = [ "https://ezkea.cachix.org" ];
|
substituters = [ "https://ezkea.cachix.org" ];
|
||||||
trusted-public-keys = [ "ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI=" ];
|
trusted-public-keys = [ "ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI=" ];
|
||||||
|
|||||||
@@ -1,19 +1,23 @@
|
|||||||
final: prev: let
|
final: prev: let
|
||||||
# Use latest rust from overlay which should work on non-NixOS
|
|
||||||
rust_latest = prev.rust-bin.stable.latest.default;
|
rust_latest = prev.rust-bin.stable.latest.default;
|
||||||
|
golang_latest = prev.go-bin.latestStable;
|
||||||
|
buildGoModuleLatest = prev.buildGoModule.override {
|
||||||
|
go = golang_latest;
|
||||||
|
};
|
||||||
myRustPlatform = prev.makeRustPlatform {
|
myRustPlatform = prev.makeRustPlatform {
|
||||||
cargo = rust_latest;
|
cargo = rust_latest;
|
||||||
rustc = rust_latest;
|
rustc = rust_latest;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
lazygitLatest = prev.lazygit.overrideAttrs (_: rec {
|
lazygitLatest = prev.lazygit.overrideAttrs (_: rec {
|
||||||
version = "0.55.1";
|
version = "0.61.0";
|
||||||
src = prev.fetchFromGitHub {
|
src = prev.fetchFromGitHub {
|
||||||
owner = "jesseduffield";
|
owner = "jesseduffield";
|
||||||
repo = "lazygit";
|
repo = "lazygit";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-UofhgILZhVXnYiGpb25m4Ct4sbu5pRmjVgj3oEf5Uyk=";
|
hash = "sha256-G7JulCK9WUVWbp1V7lYuM3fehCdn1cNAJHYjr3aKDvQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = null;
|
vendorHash = null;
|
||||||
subPackages = [ "." ];
|
subPackages = [ "." ];
|
||||||
ldflags = [
|
ldflags = [
|
||||||
@@ -25,21 +29,31 @@ in {
|
|||||||
atuinLatest = (prev.atuin.override {
|
atuinLatest = (prev.atuin.override {
|
||||||
rustPlatform = myRustPlatform;
|
rustPlatform = myRustPlatform;
|
||||||
}).overrideAttrs (oldAttrs: rec {
|
}).overrideAttrs (oldAttrs: rec {
|
||||||
version = "18.10.0";
|
version = "18.13.6";
|
||||||
|
|
||||||
src = prev.fetchFromGitHub {
|
src = prev.fetchFromGitHub {
|
||||||
owner = "atuinsh";
|
owner = "atuinsh";
|
||||||
repo = "atuin";
|
repo = "atuin";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-bfSa3RtVXxHt3usDqqpE/oXKKDUZOrf+tD9uL59fr6M=";
|
hash = "sha256-yAw+ty6FUnFbiRTdAe2QQHzj6uU24fZ/bEIXcHl/thg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = myRustPlatform.fetchCargoVendor {
|
cargoDeps = myRustPlatform.fetchCargoVendor {
|
||||||
# name = "atuin-${version}-vendor.tar.gz";
|
# name = "atuin-${version}-vendor.tar.gz";
|
||||||
inherit src;
|
inherit src;
|
||||||
hash = "sha256-67ffivZVCly1GWA3fJ9mT8nGv2EGd6eCthbaIu/IW3M=";
|
hash = "sha256-jirVe0+N5+UHZWioj8AipUhawMBameqEJJpa8HPTnfw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cargoBuildFeatures = [
|
||||||
|
"ai"
|
||||||
|
"client"
|
||||||
|
"clipboard"
|
||||||
|
"daemon"
|
||||||
|
"hex"
|
||||||
|
"sync"
|
||||||
|
];
|
||||||
|
cargoCheckFeatures = cargoBuildFeatures;
|
||||||
|
|
||||||
preCheck = (oldAttrs.preCheck or "") + ''
|
preCheck = (oldAttrs.preCheck or "") + ''
|
||||||
export HOME="$TMPDIR"
|
export HOME="$TMPDIR"
|
||||||
export XDG_CONFIG_HOME="$TMPDIR/.config"
|
export XDG_CONFIG_HOME="$TMPDIR/.config"
|
||||||
@@ -62,4 +76,53 @@ in {
|
|||||||
# "-X github.com/derailed/k9s/version.BuildSource=nix"
|
# "-X github.com/derailed/k9s/version.BuildSource=nix"
|
||||||
# ];
|
# ];
|
||||||
# });
|
# });
|
||||||
|
|
||||||
|
ghDashLatest = (prev.gh-dash.override {
|
||||||
|
buildGoModule = buildGoModuleLatest;
|
||||||
|
}).overrideAttrs (oldAttrs: rec {
|
||||||
|
version = "4.23.2";
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "dlvhdr";
|
||||||
|
repo = "gh-dash";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-C06LPVoE23ITJpMG0x75Djgeup+eb5uYwA8wL7xxvWU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-4AbeoH0l7eIS7d0yyJxM7+woC7Q/FCh0BOJj3d1zyX4=";
|
||||||
|
doCheck = false;
|
||||||
|
checkFlags = [
|
||||||
|
"-skip=TestFullOutput"
|
||||||
|
];
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
"-X github.com/dlvhdr/gh-dash/v4/cmd.Version=${version}"
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru = (oldAttrs.passthru or {}) // {
|
||||||
|
tests = {
|
||||||
|
version = oldAttrs.testers.testVersion { package = final.ghDashLatest; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
diffNavLatest = (prev.diffnav.override {
|
||||||
|
buildGoModule = buildGoModuleLatest;
|
||||||
|
}).overrideAttrs (_: rec {
|
||||||
|
version = "0.10.0";
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "dlvhdr";
|
||||||
|
repo = "diffnav";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-6VtAQzZNLQrf8QYVXxLUgb3F6xguFDbwaE9kahPhbSE=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-gmmckzR0D1oFuTG5TAb6gLMoNbcZl9EsjbFjhPfJqnQ=";
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,178 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.desktop;
|
||||||
|
|
||||||
|
defaultWaylandPackages = with pkgs; [
|
||||||
|
brightnessctl
|
||||||
|
cliphist
|
||||||
|
foot
|
||||||
|
grim
|
||||||
|
libnotify
|
||||||
|
mako
|
||||||
|
networkmanagerapplet
|
||||||
|
playerctl
|
||||||
|
polkit_gnome
|
||||||
|
pavucontrol
|
||||||
|
rofi
|
||||||
|
slurp
|
||||||
|
waybar
|
||||||
|
wl-clipboard
|
||||||
|
xdg-utils
|
||||||
|
];
|
||||||
|
|
||||||
|
defaultSwayPackages =
|
||||||
|
defaultWaylandPackages
|
||||||
|
++ (with pkgs; [
|
||||||
|
pulseaudio
|
||||||
|
swayidle
|
||||||
|
swaylock
|
||||||
|
wmenu
|
||||||
|
]);
|
||||||
|
|
||||||
|
resolvedDisplayManager =
|
||||||
|
if cfg.displayManager != "auto"
|
||||||
|
then cfg.displayManager
|
||||||
|
else if cfg.gnome.enable
|
||||||
|
then "gdm"
|
||||||
|
else if cfg.xfce.enable
|
||||||
|
then "lightdm"
|
||||||
|
else "none";
|
||||||
|
in {
|
||||||
|
imports = [./xdg.nix];
|
||||||
|
|
||||||
|
options.desktop = {
|
||||||
|
displayManager = lib.mkOption {
|
||||||
|
type = lib.types.enum ["auto" "none" "gdm" "lightdm" "ly"];
|
||||||
|
default = "auto";
|
||||||
|
description = ''
|
||||||
|
Display manager to enable. In auto mode, GDM is used when GNOME is
|
||||||
|
enabled, LightDM is used when XFCE is enabled, and no display manager
|
||||||
|
is enabled for compositor-only configurations.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
gnome.enable = lib.mkEnableOption "the vanilla GNOME desktop environment";
|
||||||
|
|
||||||
|
xfce.enable = lib.mkEnableOption "the vanilla XFCE desktop environment";
|
||||||
|
|
||||||
|
sway = {
|
||||||
|
enable = lib.mkEnableOption "the Sway Wayland compositor";
|
||||||
|
|
||||||
|
extraPackages = lib.mkOption {
|
||||||
|
type = with lib.types; listOf package;
|
||||||
|
default = defaultSwayPackages;
|
||||||
|
defaultText = lib.literalExpression ''
|
||||||
|
with pkgs; [
|
||||||
|
brightnessctl
|
||||||
|
cliphist
|
||||||
|
foot
|
||||||
|
grim
|
||||||
|
libnotify
|
||||||
|
mako
|
||||||
|
networkmanagerapplet
|
||||||
|
playerctl
|
||||||
|
polkit_gnome
|
||||||
|
pulseaudio
|
||||||
|
pavucontrol
|
||||||
|
rofi
|
||||||
|
slurp
|
||||||
|
swayidle
|
||||||
|
swaylock
|
||||||
|
waybar
|
||||||
|
wl-clipboard
|
||||||
|
wmenu
|
||||||
|
xdg-utils
|
||||||
|
]
|
||||||
|
'';
|
||||||
|
description = "Packages installed alongside Sway.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hyprland = {
|
||||||
|
enable = lib.mkEnableOption "the Hyprland Wayland compositor";
|
||||||
|
|
||||||
|
extraPackages = lib.mkOption {
|
||||||
|
type = with lib.types; listOf package;
|
||||||
|
default = defaultWaylandPackages;
|
||||||
|
defaultText = lib.literalExpression ''
|
||||||
|
with pkgs; [
|
||||||
|
brightnessctl
|
||||||
|
cliphist
|
||||||
|
foot
|
||||||
|
grim
|
||||||
|
libnotify
|
||||||
|
mako
|
||||||
|
networkmanagerapplet
|
||||||
|
playerctl
|
||||||
|
polkit_gnome
|
||||||
|
pavucontrol
|
||||||
|
rofi
|
||||||
|
slurp
|
||||||
|
waybar
|
||||||
|
wl-clipboard
|
||||||
|
xdg-utils
|
||||||
|
]
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Packages installed alongside Hyprland. Hyprlock and Hypridle are
|
||||||
|
enabled separately so their NixOS integration, including PAM, is
|
||||||
|
configured as well.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.gnome.enable {
|
||||||
|
services.desktopManager.gnome.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.xfce.enable {
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
desktopManager.xfce.enable = true;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.sway.enable {
|
||||||
|
programs.sway = {
|
||||||
|
enable = true;
|
||||||
|
wrapperFeatures.gtk = true;
|
||||||
|
extraPackages = cfg.sway.extraPackages;
|
||||||
|
extraSessionCommands = ''
|
||||||
|
export XDG_SESSION_TYPE=wayland
|
||||||
|
export XDG_SESSION_DESKTOP=sway
|
||||||
|
export NIXOS_OZONE_WL=1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.hyprland.enable {
|
||||||
|
programs = {
|
||||||
|
hyprland.enable = true;
|
||||||
|
hyprlock.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = cfg.hyprland.extraPackages;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf (resolvedDisplayManager == "gdm") {
|
||||||
|
services.displayManager.gdm.enable = true;
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf (resolvedDisplayManager == "lightdm") {
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
displayManager.lightdm.enable = true;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf (resolvedDisplayManager == "ly") {
|
||||||
|
services.displayManager.ly.enable = true;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.desktop;
|
||||||
|
needsGtkPortal = cfg.xfce.enable || cfg.hyprland.enable;
|
||||||
|
usesPortal = cfg.gnome.enable || cfg.xfce.enable || cfg.sway.enable || cfg.hyprland.enable;
|
||||||
|
in {
|
||||||
|
config = lib.mkMerge [
|
||||||
|
# GNOME and Sway configure their own portals in NixOS. XFCE needs a
|
||||||
|
# portal; Hyprland benefits from GTK as a fallback to its native one.
|
||||||
|
(lib.mkIf needsGtkPortal {
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf (cfg.sway.enable || needsGtkPortal) {
|
||||||
|
xdg.portal.config.common.default = ["gtk"];
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf cfg.sway.enable {
|
||||||
|
xdg.portal.wlr.settings.screencast = {
|
||||||
|
chooser_type = "dmenu";
|
||||||
|
chooser_cmd = "${pkgs.wmenu}/bin/wmenu -l 10 -p 'Select screen to share:'";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf (usesPortal && config.services.gnome.gnome-keyring.enable) {
|
||||||
|
xdg.portal.config.common."org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf (cfg.sway.enable && config.services.gnome.gnome-keyring.enable) {
|
||||||
|
xdg.portal.config.sway."org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
|
})
|
||||||
|
|
||||||
|
# A per-desktop config takes precedence over Hyprland's packaged config,
|
||||||
|
# so include its native portal whenever adding a Secret preference.
|
||||||
|
(lib.mkIf (cfg.hyprland.enable && config.services.gnome.gnome-keyring.enable) {
|
||||||
|
xdg.portal.config.hyprland = {
|
||||||
|
default = ["hyprland" "gtk"];
|
||||||
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -43,6 +43,11 @@ in {
|
|||||||
vulkan-tools
|
vulkan-tools
|
||||||
mesa-demos
|
mesa-demos
|
||||||
];
|
];
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
(mkIf (cfg.gpuVendor == "nvidia") {
|
(mkIf (cfg.gpuVendor == "nvidia") {
|
||||||
@@ -61,9 +66,6 @@ in {
|
|||||||
|
|
||||||
(mkIf (cfg.gpuVendor == "amd") {
|
(mkIf (cfg.gpuVendor == "amd") {
|
||||||
services.xserver.videoDrivers = ["amdgpu"];
|
services.xserver.videoDrivers = ["amdgpu"];
|
||||||
# hardware.graphics.extraPackages = with pkgs; [
|
|
||||||
# amdvlk
|
|
||||||
# ];
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
radeontop
|
radeontop
|
||||||
];
|
];
|
||||||
@@ -82,7 +84,6 @@ in {
|
|||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
MOZ_ENABLE_WAYLAND = "1";
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
QT_QPA_PLATFORM = "wayland";
|
QT_QPA_PLATFORM = "wayland";
|
||||||
SDL_VIDEODRIVER = "wayland";
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ I like Final Fantasy, alright? Isn't everyone supposed to have a hobby?
|
|||||||
|
|
||||||
These are named after Final Fantasy VII characters.
|
These are named after Final Fantasy VII characters.
|
||||||
|
|
||||||
### Servers/Network Infrastructure
|
### Servers/Network Infrastructure (bare metal)
|
||||||
|
|
||||||
These are named after Final Fantasy summons. There is some infrastructure missing here like my routers and switches that I also name after summons.
|
These are named after Final Fantasy summons. There is some infrastructure missing here like my routers and switches that I also name after summons.
|
||||||
|
|
||||||
|
### Servers/Network Infrastructure (virtual machines)
|
||||||
|
|
||||||
|
These are named after Final Fantasy XIV Online characters (currently, these are named after the Scions of the Seventh Dawn).
|
||||||
|
|||||||
@@ -22,9 +22,11 @@ in {
|
|||||||
})
|
})
|
||||||
../../apps/gaming.nix
|
../../apps/gaming.nix
|
||||||
../../apps/appimage.nix
|
../../apps/appimage.nix
|
||||||
|
../../desktop
|
||||||
../../graphics
|
../../graphics
|
||||||
../../pwrMgmt
|
../../pwrMgmt
|
||||||
../../networking/core.nix
|
../../networking/core.nix
|
||||||
|
../../security/yubico.nix
|
||||||
../../sound/pipewire.nix
|
../../sound/pipewire.nix
|
||||||
../../sound/shairport.nix
|
../../sound/shairport.nix
|
||||||
../../sound/focusrite.nix
|
../../sound/focusrite.nix
|
||||||
@@ -33,7 +35,20 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
# Enable flakes for NixOS
|
# Enable flakes for NixOS
|
||||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
nix.settings = {
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
substituters = [
|
||||||
|
"https://attic.home.wyattjmiller.com/wyatt"
|
||||||
|
];
|
||||||
|
|
||||||
|
trusted-substituters = [
|
||||||
|
"https://attic.home.wyattjmiller.com/wyatt"
|
||||||
|
];
|
||||||
|
|
||||||
|
trusted-public-keys = [
|
||||||
|
"wyatt:KBM2U2fVUomYUdMsxeNp0MDrUrCU5BECZHLF72o8TOI="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
# Custom kernel/boot stuff
|
# Custom kernel/boot stuff
|
||||||
boot = {
|
boot = {
|
||||||
@@ -56,22 +71,40 @@ in {
|
|||||||
grim
|
grim
|
||||||
slurp
|
slurp
|
||||||
playerctl
|
playerctl
|
||||||
light
|
# light - UNMAINTAINED, brightnessctl is the replacement
|
||||||
brightnessctl
|
brightnessctl
|
||||||
wttrbar
|
wttrbar
|
||||||
cliphist
|
cliphist
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
xdg-utils
|
xdg-utils
|
||||||
flatpak-xdg-utils
|
flatpak-xdg-utils
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
shared-mime-info
|
shared-mime-info
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
wl-clip-persist
|
wl-clip-persist
|
||||||
|
ollama-rocm
|
||||||
|
newelle
|
||||||
|
vlc
|
||||||
];
|
];
|
||||||
|
|
||||||
|
systemd.user.services.ollama = {
|
||||||
|
description = "Ollama local AI server";
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.ollama-rocm}/bin/ollama serve";
|
||||||
|
Restart = "on-failure";
|
||||||
|
Environment = [
|
||||||
|
"OLLAMA_HOST=0.0.0.0:11434"
|
||||||
|
"OLLAMA_CONTEXT_LENGTH=64000"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# Enable Polkit
|
# Enable Polkit
|
||||||
security.polkit.enable = true;
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Enable desktop support (sway)
|
||||||
|
desktop.sway.enable = true;
|
||||||
|
desktop.displayManager = "ly";
|
||||||
|
|
||||||
# Graphics module (../../graphics/default.nix)
|
# Graphics module (../../graphics/default.nix)
|
||||||
graphics = {
|
graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -93,23 +126,25 @@ in {
|
|||||||
gamemode.enable = true;
|
gamemode.enable = true;
|
||||||
gamescope.enable = true;
|
gamescope.enable = true;
|
||||||
mangohud.enable = true;
|
mangohud.enable = true;
|
||||||
|
proton = {
|
||||||
|
enable = true;
|
||||||
|
manager = "protonplus";
|
||||||
|
};
|
||||||
lutris = {
|
lutris = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wine = {
|
wine = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.wine-staging;
|
package = pkgs.wine-staging;
|
||||||
};
|
};
|
||||||
compatibility = {
|
|
||||||
protonSupport = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ffxiv.enable = true;
|
ffxiv.enable = true;
|
||||||
|
archon.enable = true;
|
||||||
minecraft.enable = true;
|
minecraft.enable = true;
|
||||||
aagl.anime-game-launcher.enable = true;
|
|
||||||
vintage-story.enable = true;
|
vintage-story.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
# Power management (see ../../pwrMgmt/default.nix)
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
pwrMgmt = {
|
pwrMgmt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -170,27 +205,6 @@ in {
|
|||||||
# AppImage support
|
# AppImage support
|
||||||
appimage.enable = true;
|
appimage.enable = true;
|
||||||
|
|
||||||
# XDG stuff
|
|
||||||
xdg = {
|
|
||||||
portal = {
|
|
||||||
enable = true;
|
|
||||||
config = {
|
|
||||||
sway = {
|
|
||||||
default = ["wlr" "gtk"];
|
|
||||||
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
||||||
};
|
|
||||||
common = {
|
|
||||||
default = ["gtk"];
|
|
||||||
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraPortals = with pkgs; [
|
|
||||||
xdg-desktop-portal-wlr
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# sched_ext userspace CPU scheduling stuff - idk
|
# sched_ext userspace CPU scheduling stuff - idk
|
||||||
services.scx = {
|
services.scx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -209,5 +223,8 @@ in {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Tailscale service
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
|
||||||
system.stateVersion = "24.11";
|
system.stateVersion = "24.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
nur,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
hildibrand = nur.packages.${pkgs.stdenv.hostPlatform.system}.hildibrand;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
../../pwrMgmt
|
||||||
|
../../networking/core.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes for NixOS
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
# Custom kernel/boot stuff
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Set your timezone
|
||||||
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
|
# Enable OpenSSH
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Enable GnuPG
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable Polkit
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
|
pwrMgmt = {
|
||||||
|
enable = true;
|
||||||
|
cpuFreqGovernor = "performance";
|
||||||
|
powertop.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
networkManager.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
hildibrand
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.hildibrand = {
|
||||||
|
description = "Hildibrand - trivia buzzer bot";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
User = userName;
|
||||||
|
WorkingDirectory = "/home/${userName}";
|
||||||
|
ExecStart = "${hildibrand}/bin/hildebrand";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "5s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
${userName} = {
|
||||||
|
extraGroups = [ "wheel" "network" ];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.fail2ban;
|
||||||
|
maxretry = 5;
|
||||||
|
bantime = "3h";
|
||||||
|
bantime-increment = {
|
||||||
|
enable = true;
|
||||||
|
rndtime = "10m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/498ce176-f090-46d8-96bf-9e6141cffa19";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/09A6-B803";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/4a64a2ee-2b32-4e53-b00f-7b1f127162aa"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
nur,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
../../pwrMgmt
|
||||||
|
../../networking/core.nix
|
||||||
|
../../virtualization/podman.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes for NixOS
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
# Custom kernel/boot stuff
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Set your timezone
|
||||||
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
|
# Enable OpenSSH
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Enable GnuPG
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable Polkit
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
|
pwrMgmt = {
|
||||||
|
enable = true;
|
||||||
|
cpuFreqGovernor = "performance";
|
||||||
|
powertop.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
tcpPorts = {
|
||||||
|
allowedPorts = [ 42420 ];
|
||||||
|
};
|
||||||
|
udpPorts = {
|
||||||
|
allowedPorts = [ 42420 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networkManager.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
nur.packages.${pkgs.system}.vintage-story
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.vintagestory-server = {
|
||||||
|
description = "Vintage Story Server";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
User = userName;
|
||||||
|
WorkingDirectory = "/home/${userName}";
|
||||||
|
ExecStart = "${nur.packages.${pkgs.system}.vintage-story}/bin/vintagestory-server";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "5s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
${userName} = {
|
||||||
|
extraGroups = [ "wheel" "network" ];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.fail2ban;
|
||||||
|
maxretry = 5;
|
||||||
|
bantime = "3h";
|
||||||
|
bantime-increment = {
|
||||||
|
enable = true;
|
||||||
|
rndtime = "10m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/ec4c43ec-efcc-40ea-a4c8-411e60ee7c4e";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/140E-FE19";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/547bbd78-85be-4d17-a519-c4a2a923bdab"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
neovim
|
neovim
|
||||||
git
|
git
|
||||||
|
tailscale
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.variables.EDITOR = "nvim";
|
environment.variables.EDITOR = "nvim";
|
||||||
|
|||||||
@@ -0,0 +1,121 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
userName,
|
||||||
|
nur,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
../../pwrMgmt
|
||||||
|
../../networking/core.nix
|
||||||
|
../../virtualization/podman.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flakes for NixOS
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||||
|
|
||||||
|
# Custom kernel/boot stuff
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# Set your timezone
|
||||||
|
time.timeZone = "America/Detroit";
|
||||||
|
|
||||||
|
# Enable OpenSSH
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Enable keyring
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
# Enable GnuPG
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable SUID wrappers (some programs need them)
|
||||||
|
programs.mtr.enable = true;
|
||||||
|
|
||||||
|
# Enable Polkit
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
# Power management (see ../../pwrMgmt/default.nix)
|
||||||
|
pwrMgmt = {
|
||||||
|
enable = true;
|
||||||
|
cpuFreqGovernor = "performance";
|
||||||
|
powertop.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
network = {
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
tcpPorts = {
|
||||||
|
allowedPorts = [ 42420 ];
|
||||||
|
};
|
||||||
|
udpPorts = {
|
||||||
|
allowedPorts = [ 42420 ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networkManager.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
nur.packages.${pkgs.system}.vintage-story
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.vintagestory-server = {
|
||||||
|
description = "Vintage Story Server";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
User = userName;
|
||||||
|
WorkingDirectory = "/home/${userName}";
|
||||||
|
ExecStart = "${nur.packages.${pkgs.system}.vintage-story}/bin/vintagestory-server";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = "5s";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Add username to groups "wheel" and "video" - more may be added here later
|
||||||
|
users = {
|
||||||
|
groups.hazel = {};
|
||||||
|
users = {
|
||||||
|
${userName} = {
|
||||||
|
extraGroups = [ "wheel" "network" ];
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"hazel" = {
|
||||||
|
home = "/home/hazel";
|
||||||
|
group = "hazel";
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
description = "hazel";
|
||||||
|
isNormalUser = true;
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZnyiQx+k1ygX8E1lsUCB6aTdMc+OKzlZ4admlzknc5ulj0YrtUyqhbNhkNd6pP0QDBFMnXO/rzUvHp4TAyZXKFfpcBCa4zhK97ufymAfvzAjM4vRBqRNcr2n+2iRzxtolbklfjs3ocBQVxXW+pRT5wWxTgK2fcmP2xviDVldr7qte37x5YkQb5SAhYNH8tqJRnuGPe+Q0A3oN4HyHZFnrMq/HlbL5yg/0VKPTtF/IgHf+2dDz5OQQpBx3/N9u/QLwuIm9lkyOG03s0TGmE7up/i0jX2vIqp2BbGSnwdQEL/eSVZx73qQB/J62VFafg13P5yQWDJ33WSoiwhac6bg26HPmPOnCJp5R3c+7jM8N1F1ZbtsKicHSVsRg1RQSree4lchPy7FOPkCuUrB7LNE71mbpOzZNR767S6UAPaXxRw6QNYGBaDqQBwhlU8ZDF5F7EW6ahSUMOI6ECyoibzIMb56xs9osuNeUhB/BcL5sHSFpJjIbdcDLNkEKggrBl6s="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.fail2ban = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.fail2ban;
|
||||||
|
maxretry = 5;
|
||||||
|
bantime = "3h";
|
||||||
|
bantime-increment = {
|
||||||
|
enable = true;
|
||||||
|
rndtime = "10m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.tailscale;
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{ ... }: {
|
||||||
|
imports = [
|
||||||
|
./configuration.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/e2e621c1-0090-472a-99d9-61c6a87bd068";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/663E-15C0";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/60104b1a-4285-4dd1-be5e-3c3dee24515a"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
{
|
{
|
||||||
|
nur,
|
||||||
pkgs,
|
pkgs,
|
||||||
userName,
|
userName,
|
||||||
...
|
...
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
# INFO: set these to your liking
|
# INFO: set these to your liking
|
||||||
matrixFqdn = "chat.wyattjmiller.com";
|
matrixFqdn = "chat.wyattjmiller.com";
|
||||||
rtcFqdn = "rtc.wyattjmiller.com";
|
rtcFqdn = "rtc.wyattjmiller.com";
|
||||||
@@ -10,16 +12,50 @@
|
|||||||
supportEmail = "wyatt@wyattjmiller.com";
|
supportEmail = "wyatt@wyattjmiller.com";
|
||||||
livekitKeyFile = "/var/lib/livekit/livekit.key";
|
livekitKeyFile = "/var/lib/livekit/livekit.key";
|
||||||
matrixRegistrationTokenFile = "/var/lib/matrix.key";
|
matrixRegistrationTokenFile = "/var/lib/matrix.key";
|
||||||
in {
|
|
||||||
|
sableWeb = nur.packages.${pkgs.stdenv.hostPlatform.system}.sable-web;
|
||||||
|
|
||||||
|
sableConfig = pkgs.writeTextDir "config.json" (
|
||||||
|
builtins.toJSON {
|
||||||
|
defaultHomeserver = 0;
|
||||||
|
homeserverList = [ matrixFqdn ];
|
||||||
|
allowCustomHomeservers = false;
|
||||||
|
|
||||||
|
disableAccountSwitcher = false;
|
||||||
|
hideUsernamePasswordFields = false;
|
||||||
|
|
||||||
|
hashRouter = {
|
||||||
|
enabled = false;
|
||||||
|
basename = "/";
|
||||||
|
};
|
||||||
|
|
||||||
|
featuredCommunities = {
|
||||||
|
spaces = [
|
||||||
|
"#seventhdawn:chat.wyattjmiller.com"
|
||||||
|
];
|
||||||
|
rooms = [
|
||||||
|
"#general:chat.wyattjmiller.com"
|
||||||
|
"#gposeglams:chat.wyattjmiller.com"
|
||||||
|
"#lobby-vc:chat.wyattjmiller.com"
|
||||||
|
"#annoucements:chat.wyattjmiller.com"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../pwrMgmt
|
../../pwrMgmt
|
||||||
];
|
];
|
||||||
|
|
||||||
# Enable flakes for NixOS
|
# Enable flakes for NixOS
|
||||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
download-buffer-size = 134217728; # 128 MiB in bytes
|
download-buffer-size = 134217728; # 128 MiB in bytes
|
||||||
};
|
};
|
||||||
|
|
||||||
# Custom kernel/boot stuff
|
# Custom kernel/boot stuff
|
||||||
@@ -79,7 +115,7 @@ in {
|
|||||||
8448
|
8448
|
||||||
];
|
];
|
||||||
|
|
||||||
allowedUDPPortRanges =[
|
allowedUDPPortRanges = [
|
||||||
# TURN UDP relays
|
# TURN UDP relays
|
||||||
{
|
{
|
||||||
from = 49000;
|
from = 49000;
|
||||||
@@ -99,7 +135,11 @@ in {
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
|
||||||
];
|
];
|
||||||
extraGroups = ["wheel" "video" "network"];
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"video"
|
||||||
|
"network"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# fail2ban
|
# fail2ban
|
||||||
@@ -145,10 +185,12 @@ in {
|
|||||||
support_email = supportEmail;
|
support_email = supportEmail;
|
||||||
support_mxid = "@wymiller:${matrixFqdn}";
|
support_mxid = "@wymiller:${matrixFqdn}";
|
||||||
|
|
||||||
rtc_transports = [{
|
rtc_transports = [
|
||||||
type = "livekit";
|
{
|
||||||
livekit_service_url = "https://${rtcFqdn}";
|
type = "livekit";
|
||||||
}];
|
livekit_service_url = "https://${rtcFqdn}";
|
||||||
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -176,8 +218,37 @@ in {
|
|||||||
virtualHosts = {
|
virtualHosts = {
|
||||||
"${matrixFqdn}" = {
|
"${matrixFqdn}" = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
encode zstd gzip
|
@matrixEndpoints path \
|
||||||
reverse_proxy localhost:8008
|
/_matrix/* \
|
||||||
|
/_tuwunel/* \
|
||||||
|
/.well-known/matrix/*
|
||||||
|
|
||||||
|
handle @matrixEndpoints {
|
||||||
|
reverse_proxy 127.0.0.1:8008
|
||||||
|
}
|
||||||
|
|
||||||
|
@sableConfig path /config.json
|
||||||
|
handle @sableConfig {
|
||||||
|
root * ${sableConfig}
|
||||||
|
header Cache-Control "no-store"
|
||||||
|
file_server
|
||||||
|
}
|
||||||
|
|
||||||
|
handle {
|
||||||
|
root * ${sableWeb}
|
||||||
|
|
||||||
|
encode zstd gzip
|
||||||
|
try_files {path} /index.html
|
||||||
|
|
||||||
|
file_server {
|
||||||
|
precompressed br
|
||||||
|
}
|
||||||
|
|
||||||
|
header /assets/* Cache-Control "public, max-age=31536000, immutable"
|
||||||
|
header /sw.js Cache-Control "no-cache"
|
||||||
|
header /index.html Cache-Control "no-cache"
|
||||||
|
header Document-Policy "js-profiling"
|
||||||
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
"${matrixFqdn}:8448" = {
|
"${matrixFqdn}:8448" = {
|
||||||
@@ -220,7 +291,10 @@ in {
|
|||||||
matrix-registration-token-gen = {
|
matrix-registration-token-gen = {
|
||||||
before = [ "tuwunel.service" ];
|
before = [ "tuwunel.service" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
path = with pkgs; [ coreutils openssl ];
|
path = with pkgs; [
|
||||||
|
coreutils
|
||||||
|
openssl
|
||||||
|
];
|
||||||
script = ''
|
script = ''
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
@@ -242,9 +316,15 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
livekit-key-gen = {
|
livekit-key-gen = {
|
||||||
before = [ "lk-jwt-service.service" "livekit.service" ];
|
before = [
|
||||||
|
"lk-jwt-service.service"
|
||||||
|
"livekit.service"
|
||||||
|
];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
path = with pkgs; [ coreutils openssl ];
|
path = with pkgs; [
|
||||||
|
coreutils
|
||||||
|
openssl
|
||||||
|
];
|
||||||
script = ''
|
script = ''
|
||||||
set -eu
|
set -eu
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
...
|
||||||
|
}: let in {
|
||||||
|
security.pam.services = {
|
||||||
|
login.u2fAuth = true;
|
||||||
|
sudo.u2fAuth = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,9 +3,15 @@
|
|||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
|
|
||||||
|
alsa = {
|
||||||
|
enable = true;
|
||||||
|
support32Bit = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
helvum
|
# helvum - UNMAINTAINED
|
||||||
|
crosspipe
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user