Compare commits

...
45 Commits
Author SHA1 Message Date
wymiller 1bf77e4eb6 add: krile configuration 2026-10-27 13:47:25 -04:00
gitea-actions[bot] 4965e9ed1d chore: update flake lock 2026-10-25 07:04:48 +00:00
wymiller b42f545195 mod: fix fish_greeting 2026-10-19 00:52:55 -04:00
gitea-actions[bot] b27fa2440e chore: update flake lock 2026-10-18 19:38:14 +00:00
gitea-actions[bot] 6ae398abdc chore: update flake lock 2026-10-18 07:01:16 +00:00
wymiller 57490387aa Merge pull request 'Update home/shell.nix' (#16) from cosmic_lunaria/nix-config-v2:cosmic_lunaria-patch-1 into master
Reviewed-on: #16
2026-10-17 20:32:59 -05:00
cosmic_lunaria b76df1881b Update home/shell.nix 2026-10-17 20:02:48 -05:00
gitea-actions[bot] 3fa4fb8ef7 chore: update flake lock 2026-10-11 07:08:06 +00:00
gitea-actions[bot] bf799ca883 chore: update flake lock 2026-10-04 07:06:46 +00:00
wymiller 828154845b Merge branch 'master' of ssh://scm.wyattjmiller.com:222/wymiller/nix-config-v2 2026-09-27 18:05:15 -04:00
wymiller 880d1508cc mod: add csharp lsp support to neovim 2026-09-27 18:05:07 -04:00
gitea-actions[bot] c75ecae2dc chore: update flake lock 2026-09-27 07:06:30 +00:00
wymiller 6405a3f0aa mod: forgot nur inherit 2026-09-20 20:22:21 -04:00
wymiller 9f14456ecc mod: added sable web to yshtola config
added formatter
2026-09-20 20:02:44 -04:00
gitea-actions[bot] c6b1eb5337 chore: update flake lock 2026-09-20 07:07:12 +00:00
wymiller a3f1b26f31 Merge pull request '✨ Neovim refactoring' (#15) from neovim-refactoring into master
Reviewed-on: #15
2026-09-14 18:48:46 -05:00
wymiller c78fb3019c mod: added autopair, bufferline plugins 2026-09-14 19:31:56 -04:00
wymiller a70cb42d04 Merge remote-tracking branch 'origin' into neovim-refactoring 2026-09-14 19:24:53 -04:00
wymiller f8065ad6e1 Merge branch 'master' of ssh://scm.wyattjmiller.com:222/wymiller/nix-config-v2 2026-09-14 19:14:36 -04:00
wymiller 0b4027f0c0 mod: added proton manager to gaming module, added alsa to sound, added 32-bit libs to graphics 2026-09-14 19:14:30 -04:00
gitea-actions[bot] ee60d5de02 chore: update flake lock 2026-09-13 07:06:14 +00:00
gitea-actions[bot] 6cf609acc1 chore: update flake lock 2026-09-06 07:08:23 +00:00
gitea-actions[bot] 7853a1b457 chore: update flake lock 2026-08-30 07:05:21 +00:00
wymiller ce3a1bc06d chore: add flake lock update workflow 2026-08-27 13:07:46 -04:00
wymiller b8340019e8 Merge pull request '⚙️ Estinien configuration' (#14) from estinien into master
Reviewed-on: #14
2026-08-11 19:02:55 -05:00
wymiller b4390109c9 Merge branch 'master' into estinien 2026-08-11 19:02:46 -05:00
wymiller d602b3ba45 Merge pull request '⚙️ Raubahn configuration' (#13) from raubahn into master
Reviewed-on: #13
2026-08-11 19:02:22 -05:00
wymiller a1f77ed407 add: added hardware config 2026-08-11 20:05:11 -04:00
wymiller d7a2d4cf38 mod: update flake 2026-08-11 00:21:04 -04:00
wymiller 04518129d5 mod: adjusted hildibrand 2026-08-10 23:38:39 -04:00
wymiller 0769fe1e0d mod: adjusted again 2026-08-10 23:01:53 -04:00
wymiller fee14618b8 mod: added input 2026-08-10 22:44:07 -04:00
wymiller 7bc8e821b5 mod: adjust flake to add new config 2026-08-10 22:36:24 -04:00
wymiller 9f61ec8200 add: add estinien configuration 2026-08-10 22:02:49 -04:00
wymiller 28a8ccc532 flake update
needed changes cause of input
2026-08-09 17:26:26 -04:00
wymiller 76ea6e6e13 add: added raubahn config 2026-08-08 14:39:39 -04:00
wymiller 3fa654f774 mod: added nix support 2026-08-07 21:35:02 -04:00
wymiller f2be3130a2 Merge remote-tracking branch 'origin' into neovim-refactoring 2026-07-19 12:08:52 -04:00
wymiller 23999ee3a4 mod: added archon logs report tool 2026-07-19 12:05:28 -04:00
wymiller 593ab20414 mod: add thunar file manager plugins 2026-07-12 15:31:27 -04:00
wymiller e4614dbee5 mod: remove genshin impact, add wuwa, vlc, makemkv, tailscale service 2026-07-12 15:29:45 -04:00
wymiller 1070f65c6e mod: start neovim refactoring 2026-07-12 15:27:37 -04:00
wymiller 884999f719 added tailscale 2026-07-01 09:33:23 -04:00
wymiller d3dbf8583a mod: fixed valefor 2026-06-16 00:38:35 -04:00
wymiller cf2a710a79 Merge pull request 'Personal NUR' (#11) from nix-self-hosted into master
Reviewed-on: #11
2026-06-12 01:08:39 -05:00
26 changed files with 1439 additions and 204 deletions

No files matched your search

+40
View File
@@ -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
+7 -82
View File
@@ -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,
},
} }
Generated
+358 -70
View File
@@ -9,11 +9,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1780372639, "lastModified": 1792853286,
"narHash": "sha256-VFzXYHlIGwO4h4ovtnpZj9sX/Qu6+dlI00sXjHdwi2w=", "narHash": "sha256-l/Oh5k1NQqQuwh4gBF3VcmCF0WGiCT/LqfvY5huhOq4=",
"owner": "ezKEa", "owner": "ezKEa",
"repo": "aagl-gtk-on-nix", "repo": "aagl-gtk-on-nix",
"rev": "1ee1e8864a1fcfcc21a5fb5af4bd328b3c829f42", "rev": "e9a3b8fdb50a7d77a90c02c84e298c286310385b",
"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": 1792911802,
"narHash": "sha256-GdMiAfj8hRDCqrE2AvQJ3atf0y2XVGFx9/Ptr6qiju0=",
"ref": "refs/heads/master",
"rev": "a355f99a17b9dc38fc626b80340646a94ae7f1c9",
"revCount": 30,
"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,11 +52,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1781190061, "lastModified": 1792800221,
"narHash": "sha256-QRMpLbsmlciMGv4yx75FUoIl54K02JbIX1tgdPHPw1s=", "narHash": "sha256-53jIZEWNh96irEXhsMZFoNhLJgGSU3nYl1i4wFQHAsU=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "f2b3fdb347f91dfd344ad196666a0b0fe8aad05c", "rev": "d31953cf55f9027a56e9be938daf5db8c5655663",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -51,11 +74,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1779036909, "lastModified": 1792737899,
"narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=", "narHash": "sha256-P0/GhewcEQmAbzq3QunNWY2jLJaYH9F6c/5dEM/jQ4M=",
"owner": "LnL7", "owner": "LnL7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "56c666e108467d87d13508936aade6d567f2a501", "rev": "bb0b90dbd54e207100de72b5dcbe3188c98a4b69",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -96,6 +119,82 @@
"type": "github" "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": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_5": {
"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": {
"locked": {
"lastModified": 1780327564,
"narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=",
"rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6",
"revCount": 149,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
}
},
"flake-schemas_2": {
"locked": {
"lastModified": 1780327564,
"narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=",
"rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6",
"revCount": 149,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
@@ -135,18 +234,17 @@
"git-hooks": { "git-hooks": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [ "nixpkgs": [
"go-overlay", "go-overlay",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1778507602, "lastModified": 1788267358,
"narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", "narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", "rev": "27555e2624241fb116b49095df4caaee85a25691",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -155,25 +253,26 @@
"type": "github" "type": "github"
} }
}, },
"gitignore": { "git-hooks_2": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_3",
"nixpkgs": [ "nixpkgs": [
"nur",
"go-overlay", "go-overlay",
"git-hooks",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1709087332, "lastModified": 1788267358,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", "narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=",
"owner": "hercules-ci", "owner": "cachix",
"repo": "gitignore.nix", "repo": "git-hooks.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "rev": "27555e2624241fb116b49095df4caaee85a25691",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "hercules-ci", "owner": "cachix",
"repo": "gitignore.nix", "repo": "git-hooks.nix",
"type": "github" "type": "github"
} }
}, },
@@ -184,11 +283,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1781239934, "lastModified": 1792644631,
"narHash": "sha256-bK84gDc7MgPdoQfr4k1oSIsdA9pSXVjEc3QPpVFGRPs=", "narHash": "sha256-3aILZu5bQ+6khPvGCdIbC7wBFZOgPbpP0TBSL9tf89E=",
"owner": "purpleclay", "owner": "purpleclay",
"repo": "go-overlay", "repo": "go-overlay",
"rev": "efc8ba6788ff0736cc2098d7c588d58819a927e7", "rev": "ff2b494b477eb4349dd40f0564cedab552f9804d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -197,6 +296,52 @@
"type": "github" "type": "github"
} }
}, },
"go-overlay_2": {
"inputs": {
"flake-utils": "flake-utils_2",
"git-hooks": "git-hooks_2",
"nixpkgs": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1792644631,
"narHash": "sha256-3aILZu5bQ+6khPvGCdIbC7wBFZOgPbpP0TBSL9tf89E=",
"owner": "purpleclay",
"repo": "go-overlay",
"rev": "ff2b494b477eb4349dd40f0564cedab552f9804d",
"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": 1792911744,
"narHash": "sha256-iXH6FL8HYaZg0+p9lUv5bEc4k1YpvwKFYtMYbY1phTA=",
"ref": "refs/heads/master",
"rev": "01ff244467f011033d98286e8f4171a890e9060a",
"revCount": 19,
"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": [
@@ -204,11 +349,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1781184346, "lastModified": 1792818383,
"narHash": "sha256-cZRlW47U6A2nWvAmnZeeO6Xvq23gxYbVLel4KxqOrcQ=", "narHash": "sha256-199i7ubVSXTMl+0AAlL7cVCXSjcI+jWByMcimYjeMX0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "ea6d221d7aa85652d014b6f719dddf036037515b", "rev": "24f2190587513b9c2f73db112a17844ae912d965",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -220,14 +365,17 @@
}, },
"home-manager_2": { "home-manager_2": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_3" "nixpkgs": [
"nur",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1779507042, "lastModified": 1792896866,
"narHash": "sha256-7wOwi8B6D0BYsieZCnHZZj2sNUzgJhLoIVSfkwB7lxQ=", "narHash": "sha256-/0tELNnhdSnP+bHSdWiEe6KpfSwi6WrTnT9cm/jNkjA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "509ed3c603349a9d43de9e2ae6613baea6bd5b34", "rev": "c216bf5a1f173b0481bd5c8c489ebe5595ecc68c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -236,6 +384,21 @@
"type": "github" "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,
@@ -252,13 +415,36 @@
"type": "github" "type": "github"
} }
}, },
"nix-minecraft": {
"inputs": {
"flake-compat": "flake-compat_4",
"nixpkgs": [
"nur",
"nixpkgs"
],
"systems": "systems_3"
},
"locked": {
"lastModified": 1792988509,
"narHash": "sha256-1Li/v57ePpV9t6E57w/XTu760H6hYHztwm1RSd6RA8k=",
"owner": "Infinidoge",
"repo": "nix-minecraft",
"rev": "931d87d3811cabc0277be27b94392d19291bd344",
"type": "github"
},
"original": {
"owner": "Infinidoge",
"repo": "nix-minecraft",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1778869304, "lastModified": 1789286504,
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", "narHash": "sha256-eiEK7cKZORNEvX0GeF3RtNEF/JXhgf2RqSp3230q13E=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb", "rev": "ef34387ddd751e1ab8857adf4676492d32eb24ec",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -270,11 +456,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1780902259, "lastModified": 1792898606,
"narHash": "sha256-q8yYEC5f1mFlQO9RGna4LTc9QrcvWunX6FYp83munkQ=", "narHash": "sha256-Mg3rRjsbMqhSMxop5PYMXos8SwAjejrxSgVThTvP9eg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "bd0ff2d3eac24699c3664d5966b9ef36f388e2ca", "rev": "1f607aa79b6356ed45d3cd3c8079c196e79efa2c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -286,27 +472,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1778443072, "lastModified": 1792615934,
"narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "narHash": "sha256-MlvRfa1O5Cqc2/a+gG+l9TSuowEoCKCmrJ1d9oAVm0I=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "rev": "da6dc0e7b26060f2f71ce3ef7088fb56ee44fa36",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1780902259,
"narHash": "sha256-q8yYEC5f1mFlQO9RGna4LTc9QrcvWunX6FYp83munkQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bd0ff2d3eac24699c3664d5966b9ef36f388e2ca",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -316,6 +486,19 @@
"type": "github" "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": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1744536153, "lastModified": 1744536153,
@@ -334,17 +517,21 @@
}, },
"nur": { "nur": {
"inputs": { "inputs": {
"caitsith": "caitsith",
"darwin": "darwin_2", "darwin": "darwin_2",
"flake-utils": "flake-utils_2", "go-overlay": "go-overlay_2",
"hildibrand": "hildibrand",
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_4" "nix-minecraft": "nix-minecraft",
"nixpkgs": "nixpkgs_3",
"rust-overlay": "rust-overlay_4"
}, },
"locked": { "locked": {
"lastModified": 1781241353, "lastModified": 1793051642,
"narHash": "sha256-lY3e7d5bA48qnTWGBSH6SK5jfINRlCQEv+zx1eGl1zU=", "narHash": "sha256-b+CbWZU8sYR9TNBg6KJur680E+5+Zm4S4IVzkzFnJEc=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "90afe7c81a068fb1f160d68acd0ad06fa1bf7553", "rev": "8ec05b20cea4865f9fd5dd797c6e090f41863db1",
"revCount": 30, "revCount": 121,
"type": "git", "type": "git",
"url": "https://scm.wyattjmiller.com/wymiller/nur.git" "url": "https://scm.wyattjmiller.com/wymiller/nur.git"
}, },
@@ -353,6 +540,26 @@
"url": "https://scm.wyattjmiller.com/wymiller/nur.git" "url": "https://scm.wyattjmiller.com/wymiller/nur.git"
} }
}, },
"nvf": {
"inputs": {
"flake-compat": "flake-compat_5",
"mnw": "mnw",
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1793047357,
"narHash": "sha256-eY8aBTGSgtx+25254i22jyjbj+JQkEIfb+JyQ2Exnuk=",
"owner": "notashelf",
"repo": "nvf",
"rev": "60b4593979c39e9a1227c9913bd835bb1a59054b",
"type": "github"
},
"original": {
"owner": "notashelf",
"repo": "nvf",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"aagl": "aagl", "aagl": "aagl",
@@ -362,7 +569,8 @@
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"nur": "nur", "nur": "nur",
"rust-overlay": "rust-overlay_2" "nvf": "nvf",
"rust-overlay": "rust-overlay_5"
} }
}, },
"rust-overlay": { "rust-overlay": {
@@ -373,11 +581,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1780197589, "lastModified": 1785476452,
"narHash": "sha256-FVCr2Ij/jKf59a4LW481eeOF6rJRreOBrVgW/aUBTrw=", "narHash": "sha256-/CXwCFPS41rb/JI2VitKCgVK6V5E6/sfw5ke3B9zyVQ=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "21632e942d89bf1cce4e5a63d7e58a215a0cbfcc", "rev": "6ef009bf4c4873cdc1a621826722bdea7c03e62c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -387,15 +595,80 @@
} }
}, },
"rust-overlay_2": { "rust-overlay_2": {
"inputs": {
"nixpkgs": [
"nur",
"caitsith",
"nixpkgs"
]
},
"locked": {
"lastModified": 1792825530,
"narHash": "sha256-aphXA2IFNd3q48++TKmfuuvDDjkrgGdJDnDIhij9684=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "5b9f1198b59bcb31c5c3250b332e7d77590e6306",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_3": {
"inputs": {
"nixpkgs": [
"nur",
"hildibrand",
"nixpkgs"
]
},
"locked": {
"lastModified": 1792825530,
"narHash": "sha256-aphXA2IFNd3q48++TKmfuuvDDjkrgGdJDnDIhij9684=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "5b9f1198b59bcb31c5c3250b332e7d77590e6306",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_4": {
"inputs": {
"nixpkgs": [
"nur",
"nixpkgs"
]
},
"locked": {
"lastModified": 1792825530,
"narHash": "sha256-aphXA2IFNd3q48++TKmfuuvDDjkrgGdJDnDIhij9684=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "5b9f1198b59bcb31c5c3250b332e7d77590e6306",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_5": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1781234414, "lastModified": 1793000331,
"narHash": "sha256-HdA+P4fKRGOomkewnI/Tww5Wz4xK1O7+hDO90YAsPB4=", "narHash": "sha256-6sLQgHX/V/yF8VrhmsJroujeRua1GY3nDTEpnY7tHF4=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "1d18bfe3de6244c641ca4e8011186d0981b81d76", "rev": "0d0575988e4bb9ebc4cf1afb1cec1ceac0b5914e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -433,6 +706,21 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",
+86 -4
View File
@@ -17,6 +17,7 @@
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";
nur.url = "git+https://scm.wyattjmiller.com/wymiller/nur.git"; nur.url = "git+https://scm.wyattjmiller.com/wymiller/nur.git";
}; };
@@ -30,12 +31,13 @@
go-overlay, go-overlay,
aagl, aagl,
nur, nur,
nvf,
... ...
}: let }: let
userName = "wyatt"; userName = "wyatt";
userEmail = "wyatt@wyattjmiller.com"; userEmail = "wyatt@wyattjmiller.com";
extraSpecialArgs = { extraSpecialArgs = {
inherit userName userEmail nur; inherit userName userEmail nur nvf;
}; };
myOverlays = { ... }: { myOverlays = { ... }: {
@@ -48,6 +50,10 @@
}; };
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;
@@ -122,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
@@ -187,11 +193,37 @@
]; ];
}; };
# 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 # 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";
}; };
@@ -213,6 +245,56 @@
]; ];
}; };
# 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
];
}
];
};
# Homestead 2.0 Minecraft server
nixosConfigurations."krile" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
inherit userName userEmail nur;
hostname = "krile";
role = "server";
};
modules = [
myOverlays
./modules/common
./modules/machine/krile
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";
@@ -221,7 +303,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";
}; };
+105 -11
View File
@@ -1,18 +1,112 @@
{...}: let { nvf, ... }: {
dirs = { imports = [
defaults = ../defaults; nvf.homeManagerModules.default
}; ];
in {
programs.neovim = { programs.nvf = {
enable = true; enable = true;
defaultEditor = true; settings = {
vim = {
viAlias = true;
vimAlias = 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;
}; };
xdg.configFile = { utility.surround.enable = true;
nvim = { telescope.enable = true;
onChange = "nvim --headless -c 'if exists(\":LuaCacheClear\") | :LuaCacheClear' +quitall"; mini.icons.enable = true;
source = dirs.defaults + /nvim; 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; }
];
};
}; };
}; };
} }
+6 -1
View File
@@ -5,7 +5,12 @@ lib.mkIf pkgs.stdenv.isLinux {
xdg-utils xdg-utils
] ++ lib.optionals isNixOS [ ] ++ lib.optionals isNixOS [
vesktop vesktop
xfce.thunar thunar
thunar-volman
thunar-shares-plugin
thunar-vcs-plugin
thunar-archive-plugin
thunar-media-tags-plugin
pavucontrol pavucontrol
zathura zathura
gpu-screen-recorder gpu-screen-recorder
+8 -2
View File
@@ -66,8 +66,14 @@
"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." \ "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" \ "Boring, boring, boring" \
"Would you be 'happier' had I a 'good reason'?" \ "Would you be 'happier' had I a 'good reason'?" \
"A test of your reflexes!" "A test of your reflexes!" \
"Yer a wizard, Wyatt" \
"Yer a lizard, Wyatt" \
"Po-Tay-To boil em mash em stick em in a stew" \
"Oh look it's the cutie patootie potato!" \
"What a charming young man" \
"Wyatt, you are smart, kind, and resilient. I believe in you no matter what life throws at you! Kick this project's butt!! - Nico" \
"Ganbatte!"
set choose_meme (random)"%"(count $memes) set choose_meme (random)"%"(count $memes)
set choose_meme $memes[(math $choose_meme"+1")] set choose_meme $memes[(math $choose_meme"+1")]
+32 -13
View File
@@ -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 [nur.packages.${pkgs.system}.vintage-story]) ++ (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=" ];
+105
View File
@@ -0,0 +1,105 @@
# Homestead 2.0 on krile
This module uses the Minecraft NixOS module and Fabric overlay re-exported by
the existing `nur` flake input. It pins Minecraft 1.20.1, Fabric 0.19.5, Java 17,
and the [official Homestead 2.0 server pack](https://cozystudios.org/homestead/server-pack/).
The archive and all eight additional mods listed in its `startserver.sh` are
downloaded with fixed SHA-256 hashes during the Nix build. The upstream startup
script is not run.
`modules/machine/krile/configuration.nix` enables the server, accepts the Minecraft
EULA, and opens TCP 25565 and UDP 24454 (Simple Voice Chat). Forward those ports
to krile on your router if players connect from outside your network. Players
need the Homestead 2.0 client pack.
The default heap is 6 GiB initially and 10 GiB maximum. Give the VM additional
RAM for the OS, native libraries, and filesystem cache; 16 GiB total is a
reasonable starting point.
## Deploy
On krile, from the repository root:
```bash
nix eval --raw path:.#nixosConfigurations.krile.config.system.build.toplevel.drvPath
sudo nixos-rebuild switch --flake path:.#krile
```
The `path:.` form includes new files before they have been added to Git. Once the
new module and krile files are tracked, `--flake .#krile` works as usual.
The service starts on boot and restarts after an unexpected exit. Check it with:
```bash
systemctl status minecraft-server-homestead
journalctl -u minecraft-server-homestead -f
```
The console uses nix-minecraft's systemd FIFO. For example, run a command with:
```bash
sudo sh -c 'echo list > /run/minecraft/homestead.stdin'
```
Stop the service with `sudo systemctl stop minecraft-server-homestead` so it can
save the world cleanly.
## Configuration and state
Worlds, player progress, and other runtime state live in
`/srv/minecraft/homestead`. Back up that directory, particularly `world/`, before
changing pack versions. The module does not provide automatic backups.
The `mods` directory and server icon are store symlinks. `config`, `defaultconfigs`,
`kubejs`, `scripts`, and `patchouli_books` are writable copies of the pinned pack,
recreated on each start and removed on stop by nix-minecraft. Edits to those
copies do not persist across restarts. World data is not part of those managed
directories.
Change memory in the host configuration:
```nix
services.homestead.jvmOpts = "-Xms6G -Xmx12G -XX:+UseG1GC";
```
Other server settings use the underlying nix-minecraft options:
```nix
services.minecraft-servers.servers.homestead = {
serverProperties = {
server-port = 25566;
max-players = 10;
white-list = true;
};
# Add real player UUIDs here, or manage the whitelist through the console.
whitelist = { };
};
```
Changing `server-port` also changes the opened TCP port. Voice chat remains on
UDP 24454, matching the pack's `config/voicechat/voicechat-server.properties`.
To use this module on another NixOS host, pass `nur` in `specialArgs`, import
`modules/games/homestead`, set `services.homestead.enable = true`, and set
`services.minecraft-servers.eula = true` after accepting the EULA. The host must
allow unfree packages, as the common modules already do for krile.
## Pack updates
For a new release, inspect the official archive and startup script, update the
archive URL/hash in `package.nix`, update `required-mods.json` with any separate
downloads and their hashes, and match the Minecraft/Fabric versions in
`default.nix`. Evaluate and build before switching, then check the startup log.
The pack is kept fixed at 2.0 until these declarations change.
## Validation
The krile system derivation evaluates, and the pack, Fabric launcher, and
nix-minecraft setup/cleanup scripts build successfully. A temporary local server
reached `Done`, started Simple Voice Chat, and exited with status 0 after `stop`,
saving every dimension. Setup/cleanup was also checked to preserve world data
and reset managed configs. Multiplayer gameplay was not tested.
The upstream 2.0 pack emits some nonfatal mixin/recipe warnings and an optional
Falling Trees/Jade integration error during startup; these did not prevent the
startup and shutdown check from passing.
+81
View File
@@ -0,0 +1,81 @@
{
config,
lib,
nur,
pkgs,
...
}:
let
cfg = config.services.homestead;
modpack = pkgs.callPackage ./package.nix { };
in
{
imports = [ nur.nixosModules.minecraft-servers ];
options.services.homestead = {
enable = lib.mkEnableOption "the Homestead 2.0 Minecraft server";
openFirewall = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Open the Minecraft TCP port and Simple Voice Chat UDP port (24454).";
};
jvmOpts = lib.mkOption {
type = lib.types.str;
default = "-Xms6G -Xmx10G -XX:+UseG1GC";
description = "JVM options for Homestead. Leave additional RAM for the OS and native allocations.";
};
};
config = lib.mkIf cfg.enable {
nixpkgs.overlays = [ nur.overlays.minecraft ];
services.minecraft-servers = {
enable = true;
servers.homestead = {
enable = true;
inherit (cfg) openFirewall jvmOpts;
package = pkgs.fabricServers.fabric-1_20_1.override {
loaderVersion = "0.19.5";
jre_headless = pkgs.jdk17_headless;
};
managementSystem = {
tmux.enable = false;
systemd-socket.enable = true;
};
# Match the properties generated by the pack's startserver.sh.
serverProperties = lib.mapAttrs (_: lib.mkDefault) {
motd = "Homestead 2.0";
allow-flight = true;
max-tick-time = 180000;
simulation-distance = 6;
view-distance = 10;
server-port = 25565;
online-mode = true;
# keep-inventory = true;
};
symlinks = {
mods = "${modpack}/mods";
"server-icon.png" = "${modpack}/server-icon.png";
};
# Mods may rewrite their configs or generate files here. nix-minecraft
# supplies writable copies on each start and cleans them on stop.
files = lib.genAttrs [
"config"
"defaultconfigs"
"kubejs"
"scripts"
"patchouli_books"
] (dir: "${modpack}/${dir}");
};
};
networking.firewall.allowedUDPPorts = lib.mkIf cfg.openFirewall [ 24454 ];
};
}
+48
View File
@@ -0,0 +1,48 @@
{
lib,
stdenvNoCC,
fetchurl,
unzip,
}:
let
# These eight downloads come from startserver.sh in the official 2.0 pack.
requiredMods = map fetchurl (lib.importJSON ./required-mods.json);
in
stdenvNoCC.mkDerivation {
pname = "homestead-server-pack";
version = "2.0";
src = fetchurl {
name = "Homestead-2.0-Server.zip";
url = "https://drive.usercontent.google.com/download?id=1SpJBa80o_Jx_yqLjQ49pz7HP1FY2PCJj&export=download&confirm=t";
hash = "sha256-QVenE6dz+lZPHkC1hwL7Yy4lw6vg/Cr/8pnmK3iaK4o=";
};
nativeBuildInputs = [ unzip ];
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p "$out"
unzip -q "$src" \
'mods/*' 'config/*' 'defaultconfigs/*' 'kubejs/*' \
'scripts/*' 'patchouli_books/*' 'server-icon.png' -d "$out"
${lib.concatMapStringsSep "\n" (mod: ''
install -m644 ${mod} "$out/mods/${mod.name}"
'') requiredMods}
runHook postInstall
'';
meta = {
description = "Homestead 2.0 server assets, including the eight separately downloaded mods";
homepage = "https://cozystudios.org/homestead/server-pack/";
# The pack contains mods with different licenses; do not redistribute it.
license = lib.licenses.unfree;
platforms = lib.platforms.linux;
};
}
@@ -0,0 +1,42 @@
[
{
"name": "balm-fabric-1.20.1-7.3.44.jar",
"url": "https://edge.forgecdn.net/files/8969/704/balm-fabric-1.20.1-7.3.44.jar",
"hash": "sha256-hMoKTCjV9cxwjuEqKQ+U4ixMntDxXZNM0MDCMPClpMY="
},
{
"name": "CraftTweaker-fabric-1.20.1-14.0.60.jar",
"url": "https://edge.forgecdn.net/files/7772/872/CraftTweaker-fabric-1.20.1-14.0.60.jar",
"hash": "sha256-y4Kl3wHCNr6oY8SxxZtgaS/ARGHWVIK/eW1EZizqiQA="
},
{
"name": "libraryferret-fabric-1.20.1-4.0.0.jar",
"url": "https://edge.forgecdn.net/files/4601/231/libraryferret-fabric-1.20.1-4.0.0.jar",
"hash": "sha256-d/UX69gN5R+fh62cTZIrNMQNfF+2iu1tl0zu0NthuG0="
},
{
"name": "sophisticatedbackpacks-1.20.1-3.23.4.5.110.jar",
"url": "https://edge.forgecdn.net/files/7147/929/sophisticatedbackpacks-1.20.1-3.23.4.5.110.jar",
"hash": "sha256-Fewy1BGnA4R0OldwrmoitxqEGK9/juu/+se/yKGDbA8="
},
{
"name": "sophisticatedcore-1.20.1-1.2.7.15.166.jar",
"url": "https://edge.forgecdn.net/files/7341/57/sophisticatedcore-1.20.1-1.2.7.15.166.jar",
"hash": "sha256-Fzmsti4i+ZQk8yQkuZYr2S0p4HUvVJWqEW35p8Hdgxo="
},
{
"name": "sophisticatedstorage-1.20.1-1.3.5.11.142.jar",
"url": "https://edge.forgecdn.net/files/8032/765/sophisticatedstorage-1.20.1-1.3.5.11.142.jar",
"hash": "sha256-VgjSIGpr0TJlhLUrTFp7Mpvpw/izOqOiQGAHiu0Lz4k="
},
{
"name": "trashslot-fabric-1.20.1-15.1.5.jar",
"url": "https://edge.forgecdn.net/files/8019/425/trashslot-fabric-1.20.1-15.1.5.jar",
"hash": "sha256-u876a68TrhF8ShNtf/ZrYlx1QLncwNQHe08jcIXuRAg="
},
{
"name": "wirelessredstone-fabric-1.20.1-1.1.2.jar",
"url": "https://edge.forgecdn.net/files/5175/782/wirelessredstone-fabric-1.20.1-1.1.2.jar",
"hash": "sha256-Kw8xy4ngmAgD9kEvwAjTS6KatJEnA6UPkI1X3xnWf48="
}
]
+5 -4
View File
@@ -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";
}; };
}) })
+12 -6
View File
@@ -49,8 +49,6 @@ in {
]; ];
}; };
# Custom kernel/boot stuff # Custom kernel/boot stuff
boot = { boot = {
kernelPackages = pkgs.linuxPackages_latest; kernelPackages = pkgs.linuxPackages_latest;
@@ -83,6 +81,9 @@ in {
shared-mime-info shared-mime-info
wl-clipboard wl-clipboard
wl-clip-persist wl-clip-persist
ollama-rocm
newelle
vlc
]; ];
# Enable Polkit # Enable Polkit
@@ -109,23 +110,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;
@@ -225,5 +228,8 @@ in {
]; ];
}; };
# Tailscale service
services.tailscale.enable = true;
system.stateVersion = "24.11"; system.stateVersion = "24.11";
} }
+100
View File
@@ -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";
}
+6
View File
@@ -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";
}
+88
View File
@@ -0,0 +1,88 @@
{
pkgs,
userName,
nur,
...
}: {
imports = [
../../pwrMgmt
../../networking/core.nix
../../virtualization/podman.nix
../../games/homestead
];
# 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;
};
# 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";
};
};
services.homestead = {
enable = true;
openFirewall = true;
};
services.minecraft-servers.eula = true;
system.stateVersion = "26.05";
}
+6
View File
@@ -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";
}
+105
View File
@@ -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";
}
+6
View File
@@ -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";
}
+1
View File
@@ -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";
+91 -11
View File
@@ -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,13 +12,47 @@
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
@@ -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"; type = "livekit";
livekit_service_url = "https://${rtcFqdn}"; livekit_service_url = "https://${rtcFqdn}";
}]; }
];
}; };
}; };
}; };
@@ -176,8 +218,37 @@ in {
virtualHosts = { virtualHosts = {
"${matrixFqdn}" = { "${matrixFqdn}" = {
extraConfig = '' extraConfig = ''
@matrixEndpoints path \
/_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 encode zstd gzip
reverse_proxy localhost:8008 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
+5
View File
@@ -3,6 +3,11 @@
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; [