Merge branch 'dev/server'

This commit is contained in:
LavaDesu 2025-05-19 19:45:44 +10:00
commit 5ea27ceb6b
Signed by: cilly
GPG key ID: 6500251E087653C9
22 changed files with 207 additions and 100 deletions

39
flake.lock generated
View file

@ -387,6 +387,27 @@
"type": "github"
}
},
"home-manager-vicuna": {
"inputs": {
"nixpkgs": [
"nixpkgs-vicuna"
]
},
"locked": {
"lastModified": 1743808813,
"narHash": "sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT+PpMao6FbLJSr0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a9f8b3db211b4609ddd83683f9db89796c7f6ac6",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
@ -580,6 +601,22 @@
"type": "github"
}
},
"nixpkgs-vicuna": {
"locked": {
"lastModified": 1743813633,
"narHash": "sha256-BgkBz4NpV6Kg8XF7cmHDHRVGZYnKbvG0Y4p+jElwxaM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7819a0d29d1dd2bc331bec4b327f0776359b1fa6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1747426788,
@ -675,10 +712,12 @@
"catppuccin-palette": "catppuccin-palette",
"fast-syntax-highlighting": "fast-syntax-highlighting",
"home-manager": "home-manager_3",
"home-manager-vicuna": "home-manager-vicuna",
"linux-tkg": "linux-tkg",
"neovim-nightly": "neovim-nightly",
"nix-gaming": "nix-gaming",
"nixpkgs": "nixpkgs_3",
"nixpkgs-vicuna": "nixpkgs-vicuna",
"nvim-treesitter": "nvim-treesitter",
"pure": "pure",
"spicetify-nix": "spicetify-nix",

View file

@ -2,15 +2,19 @@
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
neovim-nightly.url = "github:nix-community/neovim-nightly-overlay";
agenix.url = "github:ryantm/agenix";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
aagl.url = "github:ezKEa/aagl-gtk-on-nix";
nixpkgs-vicuna.url = "github:NixOS/nixpkgs/release-24.11";
home-manager-vicuna.url = "github:nix-community/home-manager/release-24.11";
home-manager-vicuna.inputs.nixpkgs.follows = "nixpkgs-vicuna";
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixpkgs";
aagl.url = "github:ezKEa/aagl-gtk-on-nix";
catppuccin.url = "github:catppuccin/nix/8eada392fd6571a747e1c5fc358dd61c14c8704e";
catppuccin.inputs.nixpkgs.follows = "nixpkgs";
catppuccin-palette = { url = "github:catppuccin/palette"; flake = false; };
home-manager.inputs.nixpkgs.follows = "nixpkgs";
neovim-nightly.url = "github:nix-community/neovim-nightly-overlay";
neovim-nightly.inputs.nixpkgs.follows = "nixpkgs";
nix-gaming.url = "github:fufexan/nix-gaming";
@ -35,7 +39,7 @@
wine-discord-ipc-bridge = { url = "github:0e4ef622/wine-discord-ipc-bridge"; flake = false; };
};
outputs = { self, agenix, catppuccin, nixpkgs, ... } @ inputs:
outputs = { self, agenix, catppuccin, nixpkgs, nixpkgs-vicuna, ... } @ inputs:
let
overlays = (import ./overlays)
++ [(final: prev: {
@ -69,6 +73,7 @@
in
{
nixosConfigurations."anemone" = mkSystem nixpkgs "anemone" "x86_64-linux" [];
nixosConfigurations."hazel" = mkSystem nixpkgs-vicuna "hazel" "x86_64-linux" [];
nixosConfigurations."hyacinth" = mkSystem nixpkgs "hyacinth" "x86_64-linux" [];
packages."x86_64-linux" =

35
hosts/hazel/default.nix Normal file
View file

@ -0,0 +1,35 @@
{ modules, pkgs, ... }: {
networking.hostName = "hazel";
system.stateVersion = "24.11";
time.timeZone = "Australia/Melbourne";
imports = with modules.system; with modules.services; [
home-manager-stable
base
kernel
nginx
nix-stable
packages
security
./filesystem.nix
./kernel.nix
./networking.nix
../../users/hana
];
me.environment = "headless";
services.nextcloud = {
enable = true;
package = pkgs.nextcloud31;
hostName = "cloud.lava.moe";
database.createLocally = true;
config = {
dbtype = "pgsql";
adminpassFile = "/persist/nextcloud-admin-pass";
};
};
}

View file

@ -0,0 +1,53 @@
{ ... }:
let
mkLabelMount = label: type: options: {
device = "/dev/disk/by-label/${label}";
fsType = type;
options = [ "defaults" ] ++ options;
};
mkBtrfsMount = name: ext: subvol: atime: mkLabelMount name "btrfs"
([
"autodefrag"
"compress=zstd:4"
"compress-force=zstd:4"
"defaults"
"nossd"
"space_cache=v2"
"subvol=${subvol}"
(if atime then "relatime" else "noatime")
] ++ ext);
mkHazelMount = mkBtrfsMount "HAZEL" [];
in
{
boot.supportedFilesystems = [ "btrfs" ];
fileSystems = {
"/" = {
device = "rootfs";
fsType = "tmpfs";
options = [ "defaults" "mode=755" ];
};
"/boot" = mkLabelMount "ROOT" "vfat" [];
"/flower" = mkHazelMount "/current/flower" true;
"/persist" = mkHazelMount "/current/persist" true;
"/var" = mkHazelMount "/current/var" true;
"/nix" = mkHazelMount "/current/nix" false;
"/mnt" = mkHazelMount "/" true;
};
services.snapper.cleanupInterval = "1h";
services.snapper.configs.flower = {
FSTYPE = "btrfs";
SUBVOLUME = "/mnt/current/flower";
TIMELINE_CLEANUP = true;
TIMELINE_CREATE = true;
TIMELINE_MIN_AGE = "1800";
TIMELINE_LIMIT_HOURLY = "5";
TIMELINE_LIMIT_DAILY = "7";
TIMELINE_LIMIT_WEEKLY = "0";
TIMELINE_LIMIT_MONTHLY = "0";
TIMELINE_LIMIT_YEARLY = "0";
};
}

View file

10
hosts/hazel/kernel.nix Normal file
View file

@ -0,0 +1,10 @@
{ ... }: {
boot = {
loader = {
efi.canTouchEfiVariables = true;
systemd-boot.enable = true;
};
initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
kernelModules = [ "kvm-amd" ];
};
}

View file

@ -0,0 +1,5 @@
{ config, ... }: {
networking = {
useDHCP = true;
};
}

View file

@ -37,6 +37,7 @@ in {
./system/greetd.nix
./system/gui.nix
./system/home-manager.nix
./system/home-manager-stable.nix
./system/input.nix
./system/kernel.nix
./system/nix.nix

View file

@ -21,6 +21,5 @@
};
};
nix.registry.config.flake = inputs.self;
nix.registry.nixpkgs.flake = inputs.nixpkgs;
nix.registry.shells.flake = inputs.self;
}

View file

@ -0,0 +1,19 @@
{ config, inputs, modules, ... }: {
imports = [
inputs.home-manager-vicuna.nixosModules.home-manager
];
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = {
inherit inputs modules;
sysConfig = config;
};
sharedModules = [
{
imports = [ modules.options ];
config.me = config.me;
}
];
};
}

View file

@ -7,6 +7,7 @@
git
htop
jq
kitty.terminfo
libarchive
lf
msr-tools

View file

@ -11,9 +11,8 @@
withNodeJs = false;
plugins = with pkgs.vimPlugins; [
ctrlp-vim
fzf-vim
lualine-nvim
nerdtree
tokyonight-nvim
vim-fugitive
vim-nix
@ -21,14 +20,7 @@
vim-signify
vim-surround
nvim-cmp
nvim-lspconfig
cmp-nvim-lsp
cmp_luasnip
luasnip
(nvim-treesitter.withPlugins (p: with p; [
tree-sitter-comment
tree-sitter-json
tree-sitter-lua
tree-sitter-nix

View file

@ -5,11 +5,14 @@ map('n', '<C-J>', '<C-W>j', { noremap = true })
map('n', '<C-K>', '<C-W>k', { noremap = true })
map('n', '<C-L>', '<C-W>l', { noremap = true })
map('n', '<C-Q>', ':q<CR>', { noremap = true })
map('n', '<C-P>', ':Files<CR>', { noremap = true })
-- Autocommands
vim.cmd('au BufEnter * set noro')
vim.cmd('au CursorHold * lua vim.diagnostic.open_float(0, { scope = "line", focusable = false })')
-- Settings
vim.opt.mouse = ""
vim.opt.relativenumber = true
vim.opt.number = true
vim.opt.cursorline = true
@ -43,56 +46,9 @@ vim.g.signify_sign_delete_first_line = '┏━'
vim.g.signify_sign_change = vim.g.signify_sign_add
vim.g.signify_sign_change_delete = vim.g.signify_sign_delete
-- Theming
vim.g.tokyonight_style = 'night'
vim.cmd[[
syntax enable
colorscheme tokyonight
]]
local colors = require("tokyonight.colors").setup {}
vim.cmd("highlight SignifySignAdd guifg="..colors.green)
vim.cmd("highlight SignifySignChange guifg="..colors.orange)
vim.cmd("highlight SignifySignDelete guifg="..colors.red)
vim.cmd("highlight SignifySignDeleteFirstLine guifg="..colors.red)
vim.cmd("highlight SignifySignChangeDelete guifg="..colors.red)
-- Plugins
require('nvim-treesitter.configs').setup {
highlight = { enable = true },
indent = { enable = false }
}
require('lualine').setup {
options = {
theme = 'tokyonight'
}
}
-- LSP
local nvim_lsp = require('lspconfig')
local on_attach = function(client, bufnr)
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
local opts = { noremap = true, silent = true }
buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', '<space>e', '<cmd>lua vim.diagnostic.open_float(0, { scope = "line" })<CR>', opts)
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
end
require('lualine').setup { }

View file

@ -1,18 +1,16 @@
let
anemone = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEPFifSAybe97xDP/cq6AAjy7Fm0go0dtQ9ICK6JRUgc";
blossom = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA5wfPCcpkNR3ubr7cBV0UwVCDo/sMmV0aI/JOJTIxQj";
caramel = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIPFJT1XYyjDZFHYT/8RdxAReKkeU8QfpLrmMjEeW/80";
sugarcane = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIImymDDLSOdLcsox8wxS9Z84fsbsz6Mi58OU0od2p/ZQ";
dandelion = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFUk99ku7+eiIO7Q9sIPlPx3GiUljLv7W404W/zwrtzI";
hazel = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ6mi50ecrrMIn5C4QUyCjPHfSElz0mhevvFCznUzIrK";
rin = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPru5eTBvHJ4ZmrrzPRHCGM09wQP/ZHSaKYalDuBVO15";
in {
"secrets/passwd.age".publicKeys = [ anemone blossom caramel sugarcane rin ];
"secrets/wpa_conf.age".publicKeys = [ blossom caramel rin ];
"secrets/passwd.age".publicKeys = [ anemone blossom rin ];
"secrets/wpa_conf.age".publicKeys = [ blossom rin ];
"secrets/acme_dns.age".publicKeys = [ dandelion rin ];
"secrets/warden_admin.age".publicKeys = [ caramel rin ];
"secrets/acme_dns.age".publicKeys = [ hazel rin ];
"secrets/warden_admin.age".publicKeys = [ rin ];
"secrets/wg_blossom.age".publicKeys = [ blossom rin ];
"secrets/wg_caramel.age".publicKeys = [ caramel rin ];
"secrets/wg_sugarcane.age".publicKeys = [ sugarcane rin ];
"secrets/wg_caramel.age".publicKeys = [ rin ];
"secrets/wg_sugarcane.age".publicKeys = [ rin ];
}

View file

@ -1,7 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 bRFqeQ KWUiFdB5Lpd1BYGdmO/IcX0Cj9SUowY5sfwWH/FVyAU
hJKgLSMy/yLfoRtIDVmK71cDoHALXp2rgmJuagpqJ1I
-> ssh-ed25519 U9FXlg bgY7WWmCyMWJzLSAnyZwCN5Lm29WVUILVkOUDFKgryo
AZzW/A/rQEmSiy89ixBZHH9TbuLKlyAlWKLNDZj69+k
--- EoGAYXy1ggHHKrcZqHz4ugM2Biil4BCpFzVjEClsoKY
ôIzæ·£¤Z¥ÛA¯vXwh|ݧOX¢Œ†dñuÒ (ãnköè ËÒ,´òÏ þ¿°æ>ÔÇå5t¬uœ(ùܸwlpùÇ[\Û/ðsŠrãpúkÛ§F<C2A7>°ùR
-> ssh-ed25519 ZAcXHw X9WY0FdUMu85iMn7JOdsDxJsKH0wIApPyCWyAWiIB1U
ktEphBxUDaFsrwdomf4TTBeUy3RF7acMMmF0gwYIKWI
-> ssh-ed25519 U9FXlg MnvQHRu9SKFGmuX9niiDG2SuUrf2nNO2x7uFqnebVQk
qDZ/yRn70+xMnE2m/KWfA1ORQ+ssSm/k+MLBIwV5iqA
--- 7M1OahbR167KzlN5SiBKBRUEsq3hgjFWa/pmWfCjD+E
ž4 Ö<1B>Âřä•“aEyC<79>z”¦[÷żç<>qso±bp}/ƉĹŢ?ÍJp+bľóŞšm‡>.éP®ů ×B{_f‡Ű­6· µ•Vs Äó”)

Binary file not shown.

Binary file not shown.

View file

@ -1,8 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 CUCjXQ iM2w01v4y0Q3DVbpGtt6f3HiHMRw7Xr08JgTB6fe8x4
WiBMVRZr1edBVfLAPAFT4GSEGoyn9jWzO92yysNM9Mo
-> ssh-ed25519 U9FXlg Bvlaqu4nEbjfBGgBFKDmD1cBbxH2+dyz1BHzegz1AS4
+sf3rC0J2Ik1SNtpr52GxV6G6tzGLiwlvjXFWE3qrSw
--- yaZjH1jeXqPGiw1lIkH9uz6QJo/nM1lBezbpVlJDNUM
Õñ´cg¾¹j‡<6A>û"ü
UÅÑ"¨^ ¯€ÕàÌ*Þ<07>A«¢Dvl2‰cÿRq).NýLt˜ZjCBŸº5ûâl^É0)Á䥆.¥§Û
-> ssh-ed25519 CUCjXQ mqquiRe6H9yHqO6lEs+V5J1AVMEerJ3fvHsyqZQPcG4
C/oLdx+x56uwtCKHz8Et/dhEsY3OVgU4EN8QMGLqlhk
-> ssh-ed25519 U9FXlg W1WAEuZWAUmPgFNMVHe4QFvyg8JB7KVCSY3G4NIqCm4
oCC5ygrI2NX7A3RoS/0ec1xkxaNdpI+7mAD7rP1pbVY
--- gY/ClncwSlIhONgOsaSsNXHQvIJSUFyskJ9op3ZmzbU
q9¯<>&×±øÔ¥'¯à^¿ ƒB˜Ïî&3C[&R1À‡m[¨u<0E><>‰B¾<42>|H¿{íP>ð½Çì}WéËÆÚ3“*8×9}XéÝ€í

View file

@ -1,7 +1,5 @@
age-encryption.org/v1
-> ssh-ed25519 krYeuQ vlK9Aa/Fhkj1jTAcccxKnSzj0jNfEoX5ymPhlaqIVSs
Vb7lRsCmKM0Fvfb+NyNnNCjqCAQsndLNdA1nXFkiOrA
-> ssh-ed25519 U9FXlg H9ivqARf7cdfyBd4QnlqLiPNpfk2X/eK60K5//+7l1g
oYgaHVWJ8xc+fmMTMvrXSt1DsVfbNF0z4V+N/C1vwXY
--- jtu3xxWFDWBtme5eM52EsMmOwKDss8EctnY7FpfQcI4
<EFBFBD>õ`Š¢s¤E×þ+XVHõGɯÁIZ“H{8¿Æ¢Ý™™ëäšÛ…o3c=9ЍŒˆB:gt¦­Žý l Ñ‘ëÒÇ—vJù>
-> ssh-ed25519 U9FXlg XAfjch0Ys155BWD6jaQKUb8xTUg2Y1oPiAjWBHH08CM
wgp//+xP+U1Brbn2Wm/wLDFTDIqfp9rK5S21DeoEjaI
--- XsNFAF201zpqjyqi3gKJyMU4UY+AzTu8BxTBXb0GDEM
e*J#ÅÊØJ+\æÐÅ÷llÏRº ¯æãf•Æžw˜<77>«Þ~Îõ3G]‘„E"N…ahèP“¡ ЀV·8¥[xÔÙA†éªß&\5RˆN„

View file

@ -1,7 +1,5 @@
age-encryption.org/v1
-> ssh-ed25519 Hx37cw 6W7QYggFHAuAPxCBoTWdwSRxmJhtGHDgg3C2UJ73qgM
Af4Gpj2kQsNWrMt4ZQ1ItmKsuSq7McE9Ckc9mAkotms
-> ssh-ed25519 U9FXlg +snitv62lCxu4sMz/iS8mz8I+5KUwtLO0jyAY1epr0s
ePqUSmK3P3PVLo+IdWK3Gq+7b2kMkbJmpsyXqcWFAf8
--- oA8Y59o/iow4m2TjmFx5BvClendD1fpi2sRNtxnXz3Y
¤ŽâÓÀ(G‡¼dm6üîiÑñû‡>…>³(~×ÑåB{bÕ3HÕäG·7ÖŸ[ÍqB:Ù¬'†¯êIÊÍ9Þèì2Ð…ÙJعdð}ß
-> ssh-ed25519 U9FXlg nANUFeShFwM9GPwCsfUjQre6FJ3KD42uwM2veyJKqVY
qn17BM6j3alTyTdWslWyGhyRKHR9/jdczTPr9i6ZzyE
--- mY/i+wgNV7nDRSJDJkJG1TdOno+ARZcrvRMJiBLy8EI
©=!n\Î21ñÜ;,OØ+/xóÑ*Š\ Q5Êî7ÈT©qã5bSÆ“ö=­úêFÞ!SL$<24>¬iwª“B7ù¯éë0zZ¤{!SB‡“<

Binary file not shown.

View file

@ -7,8 +7,7 @@
uid = 1002;
hashedPassword = "$y$j9T$3xCNDudmfrIu5VfQQoDkj/$ugzJWq0gORN9jnhDsREu31CkL3zwniQu6KoLbmg6Wr/";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPru5eTBvHJ4ZmrrzPRHCGM09wQP/ZHSaKYalDuBVO15 rin@blossom"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ5l9t8dc6mPsKKYqZlPKvhOdyqz+DS5UOcvHuh3uVGt @strawberry"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPru5eTBvHJ4ZmrrzPRHCGM09wQP/ZHSaKYalDuBVO15 rin@anemone"
];
};
@ -16,7 +15,7 @@
home = {
username = "hana";
homeDirectory = "/home/hana";
stateVersion = "23.11";
stateVersion = "24.11";
};
imports = with modules.user; [