33 Commits

Author SHA1 Message Date
aea71bb49b wip: ready for hardware configuration 2026-02-18 19:55:43 -05:00
e7b2a1bc1e wip: still in progress 2026-02-18 14:57:21 -05:00
bdf4d54e99 wip: build still in progress 2026-02-18 08:40:47 -05:00
26662e1419 wip: yshtola build in progress 2026-02-17 18:24:34 -05:00
b8db103e08 Merge pull request 'Standalone Home Manager configuration' (#6) from hm-standalone-config into master
Reviewed-on: #6
2026-02-16 19:24:07 -06:00
08adc255d6 darwin changes 2026-02-16 19:59:35 -05:00
c81ca5ee4c works on cloud 2026-02-16 19:33:25 -05:00
9cfe456cb9 Merge remote-tracking branch 'origin' into hm-standalone-config 2026-02-16 19:19:04 -05:00
2592a1cd72 update flake 2026-02-14 18:30:51 -05:00
1f9ff31234 added vintage story flake 2026-01-28 08:25:51 -05:00
be6cab1ab2 added sched_ext scx_bpfland scheduler 2026-01-24 22:33:48 -05:00
7f0fdbc6bb more hardware virtualization stuff being added in 2026-01-05 15:46:13 -05:00
e3b134e48a added swaytreesave flake, fixed manual import, fixed infinite recursion 2025-12-30 21:48:46 -05:00
0fa26e2840 flake update 2025-12-28 22:17:23 -05:00
adcd58dce9 Merge pull request 'Nixpkgs 25.11' (#5) from 25.11-move into master
Reviewed-on: #5
2025-12-18 16:36:17 -06:00
45ca395962 modified modules for nixos to build correctly 2025-12-16 17:59:40 -05:00
923cebd9c9 modified inputs to move over to 25.11 release 2025-12-16 15:35:47 -05:00
98ce7410c2 update flake 2025-12-14 18:15:48 -05:00
b7f65a6eeb modified hardware virt 2025-12-14 17:53:10 -05:00
70691c16e5 enabled nix-ld, related libraries 2025-12-13 17:22:38 -05:00
c81b48a0ee readme updates 2025-12-08 21:52:52 -05:00
75f08c16bc added adwaita fonts 2025-12-08 21:52:46 -05:00
14a0160309 added mangohud, vkbasalt as options to enable to apps/gaming module 2025-11-10 08:09:33 -05:00
43654c2946 added helvum to packages installed 2025-11-10 08:08:31 -05:00
8dd4513997 added zathura package 2025-11-08 17:26:05 -05:00
1d95ffb81a tweaked aagl a bit 2025-11-08 17:25:58 -05:00
c53db46ca7 Merge pull request 'AAGL' (#4) from anime-game-launcher into master
Reviewed-on: #4
2025-11-08 15:12:54 -06:00
c546e6242b Merge branch 'master' into anime-game-launcher 2025-11-08 15:12:38 -06:00
05bb811e42 added every launcher that aagl has to offer
added a todo comment that mentions the in-development unified launcher
2025-11-08 16:17:38 -05:00
7615d1a1d5 added browser extension 2025-11-06 22:17:54 -05:00
9eea820f3b updated browser extensions 2025-11-03 20:59:55 -05:00
6024b77535 added aagl flake, implemeneted into gaming apps module 2025-11-02 10:25:27 -05:00
257fab9832 flake update 2025-11-01 18:46:26 -04:00
22 changed files with 643 additions and 158 deletions

267
flake.lock generated
View File

@@ -1,5 +1,27 @@
{ {
"nodes": { "nodes": {
"aagl": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1771170334,
"narHash": "sha256-tCgoCWORfNHaRXTh2QS44LwxlV8q28jVvjN5ioMicv8=",
"owner": "ezKEa",
"repo": "aagl-gtk-on-nix",
"rev": "821b4f92c2c0981ea5b571b03403df87d2b2e2ae",
"type": "github"
},
"original": {
"owner": "ezKEa",
"repo": "aagl-gtk-on-nix",
"type": "github"
}
},
"darwin": { "darwin": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -24,11 +46,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1761588595, "lastModified": 1767039857,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -37,80 +59,46 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils": { "flake-schemas": {
"inputs": {
"systems": "systems"
},
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1761577921,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
"owner": "numtide", "rev": "47849c7625e223d36766968cc6dc23ba0e135922",
"repo": "flake-utils", "revCount": 107,
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "tarball",
"type": "github" "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
}, },
"original": { "original": {
"owner": "numtide", "type": "tarball",
"repo": "flake-utils", "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
"type": "github"
} }
}, },
"ghostty": { "flake-schemas_2": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"zig": "zig",
"zon2nix": "zon2nix"
},
"locked": { "locked": {
"lastModified": 1769985646, "lastModified": 1761577921,
"narHash": "sha256-ubfC9fLfdQ0xpQuFmGQCYIRyEEmOzXd+ya5rShM217k=", "narHash": "sha256-eK3/xbUOrxp9fFlei09XNjqcdiHXxndzrTXp7jFpOk8=",
"owner": "ghostty-org", "rev": "47849c7625e223d36766968cc6dc23ba0e135922",
"repo": "ghostty", "revCount": 107,
"rev": "769fff5dfb322594c0dc7a379ee70897a7db773f", "type": "tarball",
"type": "github" "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.2.0/019a4a84-544d-7c59-b26d-e334e320c932/source.tar.gz"
}, },
"original": { "original": {
"owner": "ghostty-org", "type": "tarball",
"repo": "ghostty", "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A"
"type": "github"
} }
}, },
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"ghostty",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1768068402, "lastModified": 1770260404,
"narHash": "sha256-bAXnnJZKJiF7Xr6eNW6+PhBf1lg2P1aFUO9+xgWkXfA=", "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "8bc5473b6bc2b6e1529a9c4040411e1199c43b4c", "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1769580047,
"narHash": "sha256-tNqCP/+2+peAXXQ2V8RwsBkenlfWMERb+Uy6xmevyhM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "366d78c2856de6ab3411c15c1cb4fb4c2bf5c826",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -138,24 +126,27 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1768032153, "lastModified": 1744536153,
"narHash": "sha256-zvxtwlM8ZlulmZKyYCQAPpkm5dngSEnnHjmjV7Teloc=", "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"rev": "3146c6aa9995e7351a398e17470e15305e6e18ff", "owner": "NixOS",
"type": "tarball", "repo": "nixpkgs",
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.05pre925418.3146c6aa9995/nixexprs.tar.xz" "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
}, },
"original": { "original": {
"type": "tarball", "owner": "NixOS",
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" "ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1769900590, "lastModified": 1771043024,
"narHash": "sha256-I7Lmgj3owOTBGuauy9FL6qdpeK2umDoe07lM4V+PnyA=", "narHash": "sha256-O1XDr7EWbRp+kHrNNgLWgIrB0/US5wvw9K6RERWAj6I=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "41e216c0ca66c83b12ab7a98cc326b5db01db646", "rev": "3aadb7ca9eac2891d52a9dec199d9580a6e2bf44",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -181,26 +172,74 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": {
"locked": {
"lastModified": 1766201043,
"narHash": "sha256-eplAP+rorKKd0gNjV3rA6+0WMzb1X1i16F5m5pASnjA=",
"rev": "b3aad468604d3e488d627c0b43984eb60e75e782",
"revCount": 904049,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.904049%2Brev-b3aad468604d3e488d627c0b43984eb60e75e782/019b3f6c-8b33-7edb-b858-9979590f270b/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1769089682,
"narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
"rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
"revCount": 906333,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2511.906333%2Brev-078d69f03934859a181e81ba987c2bb033eebfc5/019bebf2-031c-7119-8fdc-ce9d29d005fa/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A"
}
},
"root": { "root": {
"inputs": { "inputs": {
"aagl": "aagl",
"darwin": "darwin", "darwin": "darwin",
"ghostty": "ghostty", "home-manager": "home-manager",
"home-manager": "home-manager_2",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay_2",
"swaytreesave": "swaytreesave",
"vintage-story": "vintage-story"
} }
}, },
"rust-overlay": { "rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1770952264,
"narHash": "sha256-CjymNrJZWBtpavyuTkfPVPaZkwzIzGaf0E/3WgcwM14=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "ec6a3d5cdf14bb5a1dd03652bd3f6351004d2188",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1769915446, "lastModified": 1771211437,
"narHash": "sha256-f1F/umtX3ZD7fF9DHSloVHc0mnAT0ry0YK2jI/6E0aI=", "narHash": "sha256-lcNK438i4DGtyA+bPXXyVLHVmJjYpVKmpux9WASa3ro=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "bc00300f010275e46feb3c3974df6587ff7b7808", "rev": "c62195b3d6e1bb11e0c2fb2a494117d3b55d410f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -209,70 +248,42 @@
"type": "github" "type": "github"
} }
}, },
"systems": { "swaytreesave": {
"inputs": {
"flake-schemas": "flake-schemas",
"nixpkgs": "nixpkgs_4"
},
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1767148467,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-W0O7SWq8ucokt4ctEAEvRvNoSM/oF7fBfb2kTN+lwTs=",
"owner": "nix-systems", "ref": "refs/heads/master",
"repo": "default", "rev": "0f4bb9bb450b28aa4f29d5eb2062deac6c26687a",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "revCount": 4,
"type": "github" "type": "git",
"url": "https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git"
}, },
"original": { "original": {
"owner": "nix-systems", "type": "git",
"repo": "default", "url": "https://scm.wyattjmiller.com/wymiller/swaytreesave-nix.git"
"type": "github"
} }
}, },
"zig": { "vintage-story": {
"inputs": { "inputs": {
"flake-compat": [ "flake-schemas": "flake-schemas_2",
"ghostty", "nixpkgs": "nixpkgs_5"
"flake-compat"
],
"flake-utils": [
"ghostty",
"flake-utils"
],
"nixpkgs": [
"ghostty",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1763295135, "lastModified": 1769397199,
"narHash": "sha256-sGv/NHCmEnJivguGwB5w8LRmVqr1P72OjS+NzcJsssE=", "narHash": "sha256-MSajncUGZtlpl88rqFdj42eGGyWnk2jw84VbK3AgUBA=",
"owner": "mitchellh", "ref": "refs/heads/master",
"repo": "zig-overlay", "rev": "4d2313c50933645040a0d12556016fc2916bfa65",
"rev": "64f8b42cfc615b2cf99144adf2b7728c7847c72a", "revCount": 1,
"type": "github" "type": "git",
"url": "https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git"
}, },
"original": { "original": {
"owner": "mitchellh", "type": "git",
"repo": "zig-overlay", "url": "https://scm.wyattjmiller.com/wymiller/vintage-story-nix.git"
"type": "github"
}
},
"zon2nix": {
"inputs": {
"nixpkgs": [
"ghostty",
"nixpkgs"
]
},
"locked": {
"lastModified": 1768231828,
"narHash": "sha256-wL/8Iij4T2OLkhHcc4NieOjf7YeJffaUYbCiCqKv/+0=",
"owner": "jcollie",
"repo": "zon2nix",
"rev": "c28e93f3ba133d4c1b1d65224e2eebede61fd071",
"type": "github"
},
"original": {
"owner": "jcollie",
"repo": "zon2nix",
"rev": "c28e93f3ba133d4c1b1d65224e2eebede61fd071",
"type": "github"
} }
} }
}, },

View File

@@ -11,8 +11,15 @@
url = "github:lnl7/nix-darwin/nix-darwin-25.11"; url = "github:lnl7/nix-darwin/nix-darwin-25.11";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
ghostty.url = "github:ghostty-org/ghostty";
rust-overlay.url = "github:oxalica/rust-overlay"; rust-overlay.url = "github:oxalica/rust-overlay";
aagl = {
url = "github:ezKEa/aagl-gtk-on-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
# My personal flakes
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 @ {
@@ -22,17 +29,21 @@
darwin, darwin,
home-manager, home-manager,
rust-overlay, rust-overlay,
aagl,
swaytreesave,
vintage-story,
... ...
}: let }: let
userName = "wyatt"; userName = "wyatt";
userEmail = "wyatt@wyattjmiller.com"; userEmail = "wyatt@wyattjmiller.com";
extraSpecialArgs = { extraSpecialArgs = {
inherit userName userEmail; inherit userName userEmail swaytreesave;
}; };
myOverlays = { ... }: { myOverlays = { ... }: {
nixpkgs.overlays = [ nixpkgs.overlays = [
rust-overlay.overlays.default rust-overlay.overlays.default
aagl.overlays.default
self.common.overlays self.common.overlays
]; ];
}; };
@@ -72,7 +83,7 @@
nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem { nixosConfigurations."cloud" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { specialArgs = {
inherit userName userEmail; inherit userName userEmail aagl vintage-story;
hostname = "cloud"; hostname = "cloud";
role = "workstation"; role = "workstation";
}; };
@@ -151,6 +162,31 @@
# ]; # ];
}; };
nixosConfigurations."yshtola" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = {
inherit userName userEmail;
hostname = "yshtola";
role = "server";
};
modules = [
myOverlays
./modules/common
./modules/machine/yshtola
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";

View File

@@ -41,14 +41,37 @@
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";
sha256 = "sha256:0pdh1v0vx1d5vnl1zh7nbk6j1fh4k4hhwp1ljs203icn306lahsn"; sha256 = "sha256:0pdh1v0vx1d5vnl1zh7nbk6j1fh4k4hhwp1ljs203icn306lahsn";
# sha256 = lib.fakeSha256; # sha256 = lib.fakeSha256;
version = "1.64.0"; version = "1.67.0";
}) })
(createChromiumExtension { (createChromiumExtension {
# bitwarden # bitwarden
id = "nngceckbapebfimnlniiiahkandclblb"; id = "nngceckbapebfimnlniiiahkandclblb";
sha256 = "sha256:0jxk3cqmgd5qj8hnw7s0k5s4bfrcmr0w0rckp3x0bmng07azw4gi"; sha256 = "sha256:0jxk3cqmgd5qj8hnw7s0k5s4bfrcmr0w0rckp3x0bmng07azw4gi";
# sha256 = lib.fakeSha256; version = "2025.10.0";
version = "2025.5.0"; })
(createChromiumExtension {
# react dev tools
id = "fmkadmapgofadopljbjfkapdkoienihi";
sha256 = "sha256:01vy0x7hdkj4g3m2l4kw5rwldhhpkcxmd2miy5rj2dzxdnbchw2z";
version = "7.0.1";
})
(createChromiumExtension {
# wappalyzer
id = "gppongmhjkpfnbhagpmjfkannfbllamg";
sha256 = "sha256:1mi1wpm714r8yp0zh0yg6kccnld36rj4xb8j4y0c18y9176vc6wx";
version = "6.10.86";
})
(createChromiumExtension {
# obsidian web clipper
id = "cnjifjpddelmedmihgijeibhnjfabmlf";
sha256 = "sha256:0bp6g63g9hk2xbq054lpf5hzwmn73jzh3hswyjfp9r7yqj83mzgy";
version = "0.12.0";
})
(createChromiumExtension {
# dark reader
id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";
sha256 = "sha256:06a9dz589i1da519kivzp7bljksl2xxsd151y7ww0hx28jd1694b";
version = "4.9.113";
}) })
]; ];
}; };

View File

@@ -1,11 +1,12 @@
{ lib { lib
, pkgs , pkgs
, userName , userName
, swaytreesave
, isNixOS ? true , isNixOS ? true
, ... , ...
}: }: let
let # Have a file sturcture that holds all the configuration files that can't be configured by Nix
# TODO: Have a file structure that holds all the configuration files that can't be configured by Nix (or I haven't found the time to do so) # or maybe I'm too lazy to do anything about it? I dunno
dirs = { dirs = {
defaults = ../defaults; defaults = ../defaults;
}; };

View File

@@ -1,4 +1,8 @@
{dirs, ...}: { {...}: let
dirs = {
defaults = ../defaults;
};
in {
programs.neovim = { programs.neovim = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;

View File

@@ -31,7 +31,6 @@
fzf fzf
aria2 aria2
gnupg gnupg
inetutils
# misc # misc
file file

View File

@@ -10,7 +10,9 @@ lib.mkIf pkgs.stdenv.isLinux {
pavucontrol pavucontrol
godot godot
aseprite aseprite
zathura
gpu-screen-recorder gpu-screen-recorder
gpu-screen-recorder-gtk gpu-screen-recorder-gtk
inetutils
]; ];
} }

View File

@@ -1,6 +1,7 @@
{ {
lib, lib,
pkgs, pkgs,
swaytreesave,
... ...
}: let }: let
dirs = { dirs = {
@@ -15,6 +16,12 @@
hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg="; hash = "sha256-ZDFbI69ECsUTjbhlw2kHRufZbQMu+FQSMmncCJ5pagg=";
}; };
in { in {
imports = [
swaytreesave.homeManagerModules.default
];
programs.swaytreesave.enable = if pkgs.stdenv.isLinux then true else false;
wayland.windowManager.sway = { wayland.windowManager.sway = {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
extraOptions = []; # Extra arguments to pass into sway. If sway goes haywire, we might need something in here extraOptions = []; # Extra arguments to pass into sway. If sway goes haywire, we might need something in here
@@ -148,4 +155,5 @@ in {
enable = pkgs.stdenv.isLinux; enable = pkgs.stdenv.isLinux;
systemd.enable = true; systemd.enable = true;
}; };
} }

View File

@@ -2,10 +2,16 @@
config, config,
lib, lib,
pkgs, pkgs,
aagl,
vintage-story,
... ...
}: let }: let
cfg = config.gaming; cfg = config.gaming;
in { in {
imports = [
aagl.nixosModules.default
];
options.gaming = { options.gaming = {
steam = { steam = {
enable = lib.mkEnableOption "Steam gaming platform"; enable = lib.mkEnableOption "Steam gaming platform";
@@ -62,6 +68,14 @@ in {
}; };
}; };
vkbasalt = {
enable = lib.mkEnableOption "vkBasalt/ReShade/GShade post processing shaders";
};
mangohud = {
enable = lib.mkEnableOption "OpenGL/Vulkan overlay tool shown in games presenting FPS, CPU/GPU/memory utilization, load, etc.";
};
lutris = { lutris = {
enable = lib.mkEnableOption "Lutris game manager and launcher"; enable = lib.mkEnableOption "Lutris game manager and launcher";
package = lib.mkOption { package = lib.mkOption {
@@ -108,9 +122,38 @@ in {
ffxiv = { ffxiv = {
enable = lib.mkEnableOption "Final Fantasy XIV and it's accompanied (unofficial) launcher"; enable = lib.mkEnableOption "Final Fantasy XIV and it's accompanied (unofficial) launcher";
}; };
# TODO: when aagl gets it's unified launcher all finished/in a stable state, transition to that launcher
aagl = {
anime-game-launcher = {
enable = lib.mkEnableOption "Genshin Impact launcher (legacy)";
};
honkers-railway-launcher = {
enable = lib.mkEnableOption "Honkai: Star Rail launcher";
};
honkers-launcher = {
enable = lib.mkEnableOption "Honkai: Impact 3rd launcher";
};
wavey-launcher = {
enable = lib.mkEnableOption "Wuthering Waves launcher";
};
sleepy-launcher = {
enable = lib.mkEnableOption "Zenless Zone Zero (ZZZ) launcher";
};
};
vintage-story = {
enable = lib.mkEnableOption "Vintage Story client and server";
};
}; };
config = { config = let
agl = cfg.aagl;
in {
programs.steam = lib.mkIf cfg.steam.enable { programs.steam = lib.mkIf cfg.steam.enable {
enable = true; enable = true;
remotePlay.openFirewall = cfg.steam.firewall.remotePlay; remotePlay.openFirewall = cfg.steam.firewall.remotePlay;
@@ -139,6 +182,26 @@ in {
]; ];
}; };
programs.anime-game-launcher = lib.mkIf agl.anime-game-launcher.enable {
enable = true;
};
programs.honkers-railway-launcher = lib.mkIf agl.honkers-railway-launcher.enable {
enable = true;
};
programs.honkers-launcher = lib.mkIf agl.honkers-launcher.enable {
enable = true;
};
programs.wavey-launcher = lib.mkIf agl.wavey-launcher.enable {
enable = true;
};
programs.sleepy-launcher = lib.mkIf agl.sleepy-launcher.enable {
enable = true;
};
environment.systemPackages = environment.systemPackages =
(lib.optionals cfg.lutris.enable ( (lib.optionals cfg.lutris.enable (
[cfg.lutris.package] ++ [cfg.lutris.package] ++
@@ -154,6 +217,20 @@ in {
cfg.lutris.extraPackages cfg.lutris.extraPackages
)) ++ )) ++
(lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++ (lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++
(lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher]); (lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++
(lib.optionals cfg.vintage-story.enable [vintage-story.packages.${pkgs.system}.default]) ++
(lib.optionals cfg.vkbasalt.enable [pkgs.vkbasalt pkgs.vkbasalt-cli]) ++
(lib.optionals cfg.mangohud.enable [pkgs.mangohud]) ++
(lib.optionals (cfg.vkbasalt.enable || cfg.mangohud.enable) [pkgs.goverlay pkgs.mesa-demos pkgs.vulkan-tools]);
nix.settings = let
inherit agl;
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)
{
substituters = [ "https://ezkea.cachix.org" ];
trusted-public-keys = [ "ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI=" ];
}
);
}; };
} }

View File

@@ -7,3 +7,11 @@ Licensed by the Mozilla Public License v2
## Synopsis ## Synopsis
This is the directory that holds shared configuration files amongst computers that I own. They are called by the root `flake.nix` file. This is the directory that holds shared configuration files amongst computers that I own. They are called by the root `flake.nix` file.
Here's a quick synopsis of each file:
- core: Sane Nix options that I set for myself
- environment: Core packages and environment variables to be set and installed
- fonts: Fonts and icons that are to be installed
- overlays: Customized packages tailored to my needs
- users: Users to be set on my system

View File

@@ -13,7 +13,6 @@
systemd systemd
lshw lshw
dmidecode dmidecode
nix-ld
]) ++ ]) ++
lib.optionals pkgs.stdenv.isDarwin (with pkgs; [ lib.optionals pkgs.stdenv.isDarwin (with pkgs; [
# nothing here, yet ;) # nothing here, yet ;)

View File

@@ -6,10 +6,14 @@
fonts.packages = with pkgs; fonts.packages = with pkgs;
[ [
noto-fonts noto-fonts
noto-fonts-emoji noto-fonts-color-emoji
liberation_ttf liberation_ttf
noto-fonts-cjk-sans noto-fonts-cjk-sans
monaspace monaspace
] ]
++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts); ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
environment.systemPackages = with pkgs; [
adwaita-icon-theme
];
} }

62
modules/common/linker.nix Normal file
View File

@@ -0,0 +1,62 @@
{ pkgs, ... }: {
programs.nix-ld = {
enable = true;
libraries = with pkgs;
[
acl
attr
bzip2
dbus
expat
fontconfig
freetype
fuse3
icu
libnotify
libsodium
libssh
libunwind
libusb1
libuuid
nspr
nss
stdenv.cc.cc
util-linux
zlib
zstd
pipewire
cups
libxkbcommon
pango
mesa
libdrm
libglvnd
libpulseaudio
atk
cairo
alsa-lib
at-spi2-atk
at-spi2-core
gdk-pixbuf
glib
gtk3
libGL
libappindicator-gtk3
vulkan-loader
xorg.libX11
xorg.libXScrnSaver
xorg.libXcomposite
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXi
xorg.libXrandr
xorg.libXrender
xorg.libXtst
xorg.libxcb
xorg.libxkbfile
xorg.libxshmfence
];
};
}

View File

@@ -40,7 +40,6 @@ in {
config = mkIf cfg.enable (mkMerge [ config = mkIf cfg.enable (mkMerge [
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
glxinfo
vulkan-tools vulkan-tools
mesa-demos mesa-demos
]; ];
@@ -62,9 +61,9 @@ in {
(mkIf (cfg.gpuVendor == "amd") { (mkIf (cfg.gpuVendor == "amd") {
services.xserver.videoDrivers = ["amdgpu"]; services.xserver.videoDrivers = ["amdgpu"];
hardware.graphics.extraPackages = with pkgs; [ # hardware.graphics.extraPackages = with pkgs; [
amdvlk # amdvlk
]; # ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
radeontop radeontop
]; ];

View File

@@ -12,4 +12,4 @@ These are named after Final Fantasy VII characters.
### Servers/Network Infrastructure ### Servers/Network Infrastructure
These are named after Final Fantasy 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.

View File

@@ -1,8 +1,8 @@
{ {
config,
lib, lib,
pkgs, pkgs,
userName, userName,
aagl,
... ...
}: let }: let
flatpakPackages = [ flatpakPackages = [
@@ -18,7 +18,7 @@
in { in {
imports = [ imports = [
(import ../../apps/flatpak.nix { (import ../../apps/flatpak.nix {
inherit lib pkgs flatpakPackages userName; inherit lib pkgs flatpakPackages userName aagl;
}) })
../../apps/gaming.nix ../../apps/gaming.nix
../../apps/appimage.nix ../../apps/appimage.nix
@@ -89,8 +89,10 @@ in {
localNetworkGameTransfers = true; localNetworkGameTransfers = true;
}; };
}; };
vkbasalt.enable = true;
gamemode.enable = true; gamemode.enable = true;
gamescope.enable = true; gamescope.enable = true;
mangohud.enable = true;
lutris = { lutris = {
enable = true; enable = true;
wine = { wine = {
@@ -100,14 +102,12 @@ in {
compatibility = { compatibility = {
protonSupport = true; protonSupport = true;
}; };
extraPackages = with pkgs; [
gamemode
mangohud
];
}; };
ffxiv.enable = true; ffxiv.enable = true;
minecraft.enable = true; minecraft.enable = true;
aagl.anime-game-launcher.enable = true;
vintage-story.enable = true;
}; };
# Power management (see ../../pwrMgmt/default.nix) # Power management (see ../../pwrMgmt/default.nix)
@@ -151,7 +151,7 @@ in {
}; };
# Add username to groups "wheel" and "video" - more may be added here later # Add username to groups "wheel" and "video" - more may be added here later
users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network"]; users.users.${userName}.extraGroups = ["wheel" "video" "gamemode" "podman" "network" "libvirtd"];
services = { services = {
# Enable OpenSSH # Enable OpenSSH
@@ -191,5 +191,23 @@ in {
}; };
}; };
# sched_ext userspace CPU scheduling stuff - idk
services.scx = {
enable = true;
scheduler = "scx_bpfland";
};
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
obs-vaapi #optional AMD hardware acceleration
obs-gstreamer
obs-vkcapture
];
};
system.stateVersion = "24.11"; system.stateVersion = "24.11";
} }

View File

@@ -2,5 +2,6 @@
imports = [ imports = [
./configuration.nix ./configuration.nix
./hardware-configuration.nix ./hardware-configuration.nix
../../common/linker.nix
]; ];
} }

View File

@@ -0,0 +1,216 @@
{
pkgs,
userName,
...
}: {
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; # TODO: check on this
boot.loader.efi.canTouchEfiVariables = true;
# Set your timezone
time.timeZone = "America/Detroit";
# Enable OpenSSH
services.openssh = {
enable = true;
PermitRootLogin = "no";
PasswordAuthentication = "no";
};
# 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;
};
# Core networking module (see ../../networking/core.nix)
network = {
networkManager.enable = true;
};
# Firewall settings (fallback, upstream way of doing things)
networking.firewall = {
enable = true;
allowedTCPPorts = [
3478
5349
7880
7881
8080
];
allowedUDPPorts = [
3478
];
allowedUDPPortRanges =[
{
from = 49000;
to = 50000;
}
{
from = 50100;
to = 50200;
}
];
};
# Add username to groups "wheel" and "video" - more may be added here later
users.users.${userName} = {
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com"
];
extraGroups = ["wheel" "video" "network"];
};
# fail2ban
services.fail2ban = {
enable = true;
package = pkgs.fail2ban;
maxretry = 5;
bantime = "3h";
bantime-increment = {
enable = true;
rndtime = "10m";
};
};
# Matrix server
services.matrix-tuwunel = {
enable = true;
package = pkgs.matrix-tuwunel;
settings = {
global = {
server_name = "wyattjmiller.com";
allow_encryption = true;
allow_federation = true;
allow_registration = false;
allow_unstable_room_versions = false;
allow_experimental_room_versions = false;
encryption_enabled_by_default_for_room_type = "all";
zstd_compression = true;
new_user_displayname_suffix = "";
max_request_size = 1048575600; # 100MB in bytes, for file uploads
database_path = "/var/lib/tuwunel";
database_backup_path = "/var/lib/tuwunel/database_backups";
database_backups_to_keep = 2;
address = [
"127.0.0.1"
"::1"
];
port = [ 8008 ];
well_known = {
client = "https://chat.wyattjmiller.com";
server = "chat.wyattjmiller.com:443";
support_email = "wyatt@wyattjmiller.com";
support_mxid = "@wymiller:wyattjmiller.com";
rtc_transports = {
type = "livekit";
livekit_service_url = "https://rtc.wyattjmiller.com";
};
};
};
};
};
# LiveKit (Matrix RTC)
services.livekit = {
enable = true;
package = pkgs.livekit;
openFirewall = true;
settings = {
port = 7880;
room.auto_create = true;
rtc = {
use_external_ip = true;
};
};
};
# Reverse proxy
services.caddy = {
enable = true;
package = pkgs.caddy;
virtualHosts = {
"chat.wyattjmiller.com" = {
extraConfig = ''
encode zstd gzip
reverse_proxy localhost:8008
'';
};
"chat.wyattjmiller.com:8443" = {
extraConfig = ''
encode zstd gzip
reverse_proxy localhost:8008
'';
};
"rtc.wyattjmiller.com" = {
extraConfig = ''
@jwt_service {
path /sfu/get* /healthz*
}
handle @jwt_service {
reverse_proxy localhost:8081
}
handle {
reverse_proxy localhost:7880 {
header_up Connection "upgrade"
header_up Upgrade {http.request.header.Upgrade}
}
}
'';
};
};
};
# TURN/STUN server
services.coturn = {
enable = true;
no-cli = false;
no-tcp-relay = false;
realm = "turn.wyattjmiller.com";
min-port = 49000;
max-port = 50000;
# TODO: fill out this extraConfig option a bit more with denial of private IP addresses
extraConfig = ''
verbose
no-multicast-peers
'';
};
system.stateVersion = "25.11";
}

View File

@@ -0,0 +1,6 @@
{ ... }: {
imports = [
./configuration.nix
./hardware-configuration.nix
];
}

View File

@@ -1,6 +1,11 @@
{...}: { # TODO: refactor into module
{ pkgs, ...}: {
services.pipewire = { services.pipewire = {
enable = true; enable = true;
pulse.enable = true; pulse.enable = true;
}; };
environment.systemPackages = with pkgs; [
helvum
];
} }

View File

@@ -1,4 +1,10 @@
{...}: { { pkgs, ... }: {
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
programs.virt-manager.enable = true; programs.virt-manager.enable = true;
services.qemuGuest.enable = true;
services.spice-vdagentd.enable = true;
environment.systemPackages = with pkgs; [
qemu
quickemu
];
} }