diff --git a/.gitea/workflows/update-flake-lock.yml b/.gitea/workflows/update-flake-lock.yml new file mode 100644 index 0000000..5509aba --- /dev/null +++ b/.gitea/workflows/update-flake-lock.yml @@ -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 diff --git a/flake.lock b/flake.lock index 71ed9bd..51ad7d4 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1785936455, - "narHash": "sha256-pXD5pfIwI6j17cpvHh9vjzY+635cCiAldN9bDjXKJ8Y=", + "lastModified": 1789138122, + "narHash": "sha256-mh+ZiGCtHAo0xIi1yaNjHsftfnlWz9JiYwHCyT16yIE=", "owner": "ezKEa", "repo": "aagl-gtk-on-nix", - "rev": "ce55463be1feee6a9a6a6d35d313b8b728c1d8c9", + "rev": "d82d6d6f66caf4b63fb154e62fad83c627874127", "type": "github" }, "original": { @@ -22,6 +22,29 @@ "type": "github" } }, + "caitsith": { + "inputs": { + "flake-schemas": "flake-schemas", + "nixpkgs": [ + "nur", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1788678360, + "narHash": "sha256-wY0SpYoSCFUEDViELieo2hh39JRNRwQcPonrtrmAc40=", + "ref": "refs/heads/master", + "rev": "e6a3ec44bc55dcd9531e69b7a5ba05e49561d7c7", + "revCount": 23, + "type": "git", + "url": "https://scm.wyattjmiller.com/wymiller/caitsith.git" + }, + "original": { + "type": "git", + "url": "https://scm.wyattjmiller.com/wymiller/caitsith.git" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -51,11 +74,11 @@ ] }, "locked": { - "lastModified": 1779036909, - "narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=", + "lastModified": 1786845137, + "narHash": "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "56c666e108467d87d13508936aade6d567f2a501", + "rev": "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48", "type": "github" }, "original": { @@ -99,17 +122,17 @@ "flake-compat_3": { "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" + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" }, "original": { - "type": "git", - "url": "https://git.lix.systems/lix-project/flake-compat.git" + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" } }, "flake-schemas": { @@ -126,6 +149,20 @@ "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": { "inputs": { "systems": "systems" @@ -165,18 +202,17 @@ "git-hooks": { "inputs": { "flake-compat": "flake-compat_2", - "gitignore": "gitignore", "nixpkgs": [ "go-overlay", "nixpkgs" ] }, "locked": { - "lastModified": 1778507602, - "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", + "lastModified": 1788267358, + "narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", + "rev": "27555e2624241fb116b49095df4caaee85a25691", "type": "github" }, "original": { @@ -185,25 +221,26 @@ "type": "github" } }, - "gitignore": { + "git-hooks_2": { "inputs": { + "flake-compat": "flake-compat_3", "nixpkgs": [ + "nur", "go-overlay", - "git-hooks", "nixpkgs" ] }, "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "lastModified": 1788267358, + "narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "27555e2624241fb116b49095df4caaee85a25691", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", + "owner": "cachix", + "repo": "git-hooks.nix", "type": "github" } }, @@ -214,11 +251,34 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1786187685, - "narHash": "sha256-yM+cGzDhRpvbYI0zpCG/wVha6Jbcs6Jlb647wzYbQEk=", + "lastModified": 1789140629, + "narHash": "sha256-1TN95Z5nh1z6pyuou2QguhkWJKAl+hIpcfVV/RayGQQ=", "owner": "purpleclay", "repo": "go-overlay", - "rev": "1f5ea3876f1d63709538c395b451f79dc6853229", + "rev": "7069b95f142184721d3aeac373d687912e7ada0e", + "type": "github" + }, + "original": { + "owner": "purpleclay", + "repo": "go-overlay", + "type": "github" + } + }, + "go-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "git-hooks": "git-hooks_2", + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1789140629, + "narHash": "sha256-1TN95Z5nh1z6pyuou2QguhkWJKAl+hIpcfVV/RayGQQ=", + "owner": "purpleclay", + "repo": "go-overlay", + "rev": "7069b95f142184721d3aeac373d687912e7ada0e", "type": "github" }, "original": { @@ -229,16 +289,19 @@ }, "hildibrand": { "inputs": { - "flake-schemas": "flake-schemas", - "nixpkgs": "nixpkgs_3", - "rust-overlay": "rust-overlay_2" + "flake-schemas": "flake-schemas_2", + "nixpkgs": [ + "nur", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_3" }, "locked": { - "lastModified": 1785717646, - "narHash": "sha256-j6MlkwaYOLa3bogK4SbOnVI5eMZ9j2GdExSiKMaELPo=", + "lastModified": 1788678407, + "narHash": "sha256-Yh0HFdJyYJ9s/9R74ybEAWs8bT8aeIiebFHCJE3534E=", "ref": "refs/heads/master", - "rev": "9588520925513ed0e47711a5798c6e9958143a0a", - "revCount": 5, + "rev": "9b9eec68fe154e8ea0bc560677006d7aa69bf855", + "revCount": 7, "type": "git", "url": "https://scm.wyattjmiller.com/wymiller/hildibrand.git" }, @@ -254,11 +317,11 @@ ] }, "locked": { - "lastModified": 1785119570, - "narHash": "sha256-Rgs2xKnGLFWQscxUaXX07oyZeuMDOHEbqDOsgliLFGM=", + "lastModified": 1789267039, + "narHash": "sha256-LWiBv9yAYFi2LPbUhDGHPGKYskJQjj2fw12OlyO1uQo=", "owner": "nix-community", "repo": "home-manager", - "rev": "d4fd24667c8cbef124bb70a20380cab75ec8474d", + "rev": "ec172013fa62135f58fb58dd17ae9651e8f39727", "type": "github" }, "original": { @@ -270,14 +333,17 @@ }, "home-manager_2": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": [ + "nur", + "nixpkgs" + ] }, "locked": { - "lastModified": 1779507042, - "narHash": "sha256-7wOwi8B6D0BYsieZCnHZZj2sNUzgJhLoIVSfkwB7lxQ=", + "lastModified": 1789273010, + "narHash": "sha256-E7dWx+utzZPpqQsBUd5sMimKTWMEEbTKFD+ya99Shps=", "owner": "nix-community", "repo": "home-manager", - "rev": "509ed3c603349a9d43de9e2ae6613baea6bd5b34", + "rev": "fdc36b12804b0179b24a5ffd282e4c95c37072e2", "type": "github" }, "original": { @@ -319,11 +385,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1778869304, - "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "lastModified": 1789006805, + "narHash": "sha256-xB8mKMOx1IA9vTDNLmJZ6n4wCMq/cuWBBOzGCRnqxrU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "rev": "8ce4ef6cb6f871616146b9fe26d2a5ae594e94fe", "type": "github" }, "original": { @@ -335,11 +401,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1786201459, - "narHash": "sha256-CiOTEjmwAmG2AWnaIno9YaCJJmpca2FXPhMAsnrolCg=", + "lastModified": 1789114715, + "narHash": "sha256-ugpsyk3NM2s87vXfUiIIiibbJ4Pp0JPS5p/3mfs+q+c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8b8c811c7c2541c30382c5de7ed26be055569c60", + "rev": "21a67dc470149f337cecafbe965d8d252a390518", "type": "github" }, "original": { @@ -351,41 +417,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1784280462, - "narHash": "sha256-DtoqIqM7VkR6NxAkcLpMwmi02USwWb3JdmNGLyhthc0=", - "rev": "293d6abedf0478e681a4dfcfcb35b30fc796a32f", - "revCount": 1009740, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2605.1009740%2Brev-293d6abedf0478e681a4dfcfcb35b30fc796a32f/019f73de-20f7-7ec2-98c8-65726640dbf9/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/NixOS/nixpkgs/%2A" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1778443072, - "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", + "lastModified": 1789114715, + "narHash": "sha256-ugpsyk3NM2s87vXfUiIIiibbJ4Pp0JPS5p/3mfs+q+c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1780902259, - "narHash": "sha256-q8yYEC5f1mFlQO9RGna4LTc9QrcvWunX6FYp83munkQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd0ff2d3eac24699c3664d5966b9ef36f388e2ca", + "rev": "21a67dc470149f337cecafbe965d8d252a390518", "type": "github" }, "original": { @@ -395,20 +431,7 @@ "type": "github" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1784796856, - "narHash": "sha256-vwxWgF+Gj276WznzGb1LxGsK/39HaQwgQXiU3EkC844=", - "rev": "e2587caef70cea85dd97d7daab492899902dbf5d", - "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1040357.e2587caef70c/nixexprs.tar.xz" - }, - "original": { - "type": "tarball", - "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" - } - }, - "nixpkgs_7": { + "nixpkgs_4": { "locked": { "lastModified": 1744536153, "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", @@ -426,18 +449,20 @@ }, "nur": { "inputs": { + "caitsith": "caitsith", "darwin": "darwin_2", - "flake-utils": "flake-utils_2", + "go-overlay": "go-overlay_2", "hildibrand": "hildibrand", "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_3", + "rust-overlay": "rust-overlay_4" }, "locked": { - "lastModified": 1786304454, - "narHash": "sha256-2ovOgwFWnKqUMoQfxbobtIWQ+TSN62llX9eJVb9hFoY=", + "lastModified": 1789283127, + "narHash": "sha256-lax4hk2gJykg1bPLkSUTMRokudDWvvia3M4/72sTBt8=", "ref": "refs/heads/master", - "rev": "ea7094e4e33fbb030edf28383de37073fc8b84e0", - "revCount": 43, + "rev": "024df8e385052c32a2b5d98bb33aa261710fb987", + "revCount": 96, "type": "git", "url": "https://scm.wyattjmiller.com/wymiller/nur.git" }, @@ -475,8 +500,7 @@ "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs_2", "nur": "nur", - "nvf": "nvf", - "rust-overlay": "rust-overlay_3" + "rust-overlay": "rust-overlay_5" } }, "rust-overlay": { @@ -504,16 +528,16 @@ "inputs": { "nixpkgs": [ "nur", - "hildibrand", + "caitsith", "nixpkgs" ] }, "locked": { - "lastModified": 1784438913, - "narHash": "sha256-NYF7ZM5ip0u+w1pBFDpIGEbrbgN/wpnLFAmBkWkYMXw=", + "lastModified": 1788678114, + "narHash": "sha256-pcqbpV4ZI79al6KAlr+WJjaEo/PYfgctRlG43D5BSJM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "afacd6819d3765a05814ee8e3de74c77d42ac799", + "rev": "4748ec2f5ed4a881474ed4c98aa71a5308cdac8d", "type": "github" }, "original": { @@ -524,14 +548,57 @@ }, "rust-overlay_3": { "inputs": { - "nixpkgs": "nixpkgs_7" + "nixpkgs": [ + "nur", + "hildibrand", + "nixpkgs" + ] }, "locked": { - "lastModified": 1786247265, - "narHash": "sha256-cVTcTqAhzSNMOVddtBhFpuv+Vx6/SgrhgZWJiI61H24=", + "lastModified": 1788678114, + "narHash": "sha256-pcqbpV4ZI79al6KAlr+WJjaEo/PYfgctRlG43D5BSJM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6df7076ea0f5697e3242719a4c71211f00411cf5", + "rev": "4748ec2f5ed4a881474ed4c98aa71a5308cdac8d", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_4": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1789196581, + "narHash": "sha256-yJr1Bt4fKkKIpPYbsKGqJ0VFdoDnURgRwuffmBQ2WzY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "228ecefb6329d5a531b77b46b581a2f0c26ee056", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_5": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1789196581, + "narHash": "sha256-yJr1Bt4fKkKIpPYbsKGqJ0VFdoDnURgRwuffmBQ2WzY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "228ecefb6329d5a531b77b46b581a2f0c26ee056", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7028d1b..576d786 100644 --- a/flake.nix +++ b/flake.nix @@ -189,6 +189,32 @@ ]; }; + # Vintage story server - for a friend + nixosConfigurations."raubahn" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit userName userEmail nur; + hostname = "raubahn"; + role = "server"; + }; + modules = [ + myOverlays + ./modules/common + ./modules/machine/raubahn + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; }; + home-manager.backupFileExtension = "bak"; + home-manager.users.${userName}.imports = [ + ./home + ]; + } + ]; + }; + # Matrix and Mastodon server nixosConfigurations."yshtola" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; @@ -215,6 +241,32 @@ ]; }; + # Discord bot server + nixosConfigurations."estinien" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit userName userEmail nur; + hostname = "estinien"; + role = "server"; + }; + modules = [ + myOverlays + ./modules/common + ./modules/machine/estinien + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = extraSpecialArgs // { isNixOS = true; role = "server"; }; + home-manager.backupFileExtension = "bak"; + home-manager.users.${userName}.imports = [ + ./home + ]; + } + ]; + }; + # generic non-NixOS Linux machine homeConfigurations."generic" = let hostname = builtins.getEnv "HOSTNAME"; diff --git a/modules/apps/gaming.nix b/modules/apps/gaming.nix index 3619c39..30435bf 100644 --- a/modules/apps/gaming.nix +++ b/modules/apps/gaming.nix @@ -76,6 +76,16 @@ in { 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 = { enable = lib.mkEnableOption "Lutris game manager and launcher"; package = lib.mkOption { @@ -93,14 +103,7 @@ in { }; }; - # Compatibility layers for Lutris compatibility = { - protonSupport = lib.mkOption { - type = lib.types.bool; - default = true; - description = "Enable Proton-like compatibility layers for Lutris"; - }; - extraTools = lib.mkOption { type = lib.types.listOf lib.types.package; default = []; @@ -153,17 +156,27 @@ in { archon = { enable = lib.mkEnableOption "Archon from NUR"; }; + + opengoal = { + enable = lib.mkEnableOption "OpenGOAL, a game engine used in a certain PlayStation 2 franchise"; + }; }; config = let agl = cfg.aagl; - nurPkgs = import "${nur.outPath}/pkgs" { - inherit pkgs; - hildibrand = nur.inputs.hildibrand.packages.${pkgs.stdenv.hostPlatform.system}.default; - }; + nurPkgs = import "${nur.outPath}/pkgs" { inherit pkgs; }; + protonManager = { + protonplus = pkgs.protonplus; + protonup-qt = pkgs.protonup-qt; + }.${cfg.proton.manager}; in { programs.steam = lib.mkIf cfg.steam.enable { enable = true; + extraPackages = with pkgs; [ + gamescope + gamemode + ]; + remotePlay.openFirewall = cfg.steam.firewall.remotePlay; localNetworkGameTransfers.openFirewall = cfg.steam.firewall.localNetworkGameTransfers; }; @@ -217,13 +230,10 @@ in { cfg.lutris.wine.package pkgs.winetricks ]) ++ - (lib.optionals cfg.lutris.compatibility.protonSupport [ - pkgs.protonup-ng - pkgs.protonup-qt - ]) ++ cfg.lutris.compatibility.extraTools ++ cfg.lutris.extraPackages )) ++ + (lib.optionals cfg.proton.enable [protonManager]) ++ (lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++ (lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++ (lib.optionals cfg.vintage-story.enable [nurPkgs.vintage-story]) ++ diff --git a/modules/graphics/default.nix b/modules/graphics/default.nix index 47fc13f..16acfe4 100644 --- a/modules/graphics/default.nix +++ b/modules/graphics/default.nix @@ -43,6 +43,11 @@ in { vulkan-tools mesa-demos ]; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; } (mkIf (cfg.gpuVendor == "nvidia") { @@ -61,9 +66,6 @@ in { (mkIf (cfg.gpuVendor == "amd") { services.xserver.videoDrivers = ["amdgpu"]; - # hardware.graphics.extraPackages = with pkgs; [ - # amdvlk - # ]; environment.systemPackages = with pkgs; [ radeontop ]; @@ -82,7 +84,6 @@ in { environment.sessionVariables = { MOZ_ENABLE_WAYLAND = "1"; QT_QPA_PLATFORM = "wayland"; - SDL_VIDEODRIVER = "wayland"; }; }) diff --git a/modules/machine/cloud/configuration.nix b/modules/machine/cloud/configuration.nix index 65896c4..d5fe10e 100644 --- a/modules/machine/cloud/configuration.nix +++ b/modules/machine/cloud/configuration.nix @@ -3,7 +3,6 @@ pkgs, userName, aagl, - nur, ... }: let flatpakPackages = [ @@ -111,15 +110,16 @@ in { gamemode.enable = true; gamescope.enable = true; mangohud.enable = true; + proton = { + enable = true; + manager = "protonplus"; + }; lutris = { enable = true; wine = { enable = true; package = pkgs.wine-staging; }; - compatibility = { - protonSupport = true; - }; }; ffxiv.enable = true; diff --git a/modules/machine/estinien/configuration.nix b/modules/machine/estinien/configuration.nix new file mode 100644 index 0000000..f93bd45 --- /dev/null +++ b/modules/machine/estinien/configuration.nix @@ -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"; +} diff --git a/modules/machine/estinien/default.nix b/modules/machine/estinien/default.nix new file mode 100644 index 0000000..3c4d411 --- /dev/null +++ b/modules/machine/estinien/default.nix @@ -0,0 +1,6 @@ +{ ... }: { + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; +} diff --git a/modules/machine/estinien/hardware-configuration.nix b/modules/machine/estinien/hardware-configuration.nix new file mode 100644 index 0000000..b4e90ba --- /dev/null +++ b/modules/machine/estinien/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"; +} diff --git a/modules/machine/raubahn/configuration.nix b/modules/machine/raubahn/configuration.nix new file mode 100644 index 0000000..073d081 --- /dev/null +++ b/modules/machine/raubahn/configuration.nix @@ -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"; +} diff --git a/modules/machine/raubahn/default.nix b/modules/machine/raubahn/default.nix new file mode 100644 index 0000000..3c4d411 --- /dev/null +++ b/modules/machine/raubahn/default.nix @@ -0,0 +1,6 @@ +{ ... }: { + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; +} diff --git a/modules/machine/raubahn/hardware-configuration.nix b/modules/machine/raubahn/hardware-configuration.nix new file mode 100644 index 0000000..9dc7cc7 --- /dev/null +++ b/modules/machine/raubahn/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"; +} diff --git a/modules/sound/pipewire.nix b/modules/sound/pipewire.nix index fc7513e..292ab62 100644 --- a/modules/sound/pipewire.nix +++ b/modules/sound/pipewire.nix @@ -3,6 +3,11 @@ services.pipewire = { enable = true; pulse.enable = true; + + alsa = { + enable = true; + support32Bit = true; + }; }; environment.systemPackages = with pkgs; [