This commit is contained in:
4DBug
2026-02-04 16:43:43 -06:00
parent 37ff9e91ff
commit 186ca3cfbf
31 changed files with 824 additions and 1279 deletions

View File

@@ -1,5 +0,0 @@
# This directory is a Syncthing folder marker.
# Do not delete.
folderID: nix
created: 2026-01-29T23:06:32-06:00

1
device.nix Normal file
View File

@@ -0,0 +1 @@
{ device = "laptop"; }

View File

@@ -1,7 +0,0 @@
{ ... }:
{
imports = [
/home/bug/nix/main.nix
];
}

View File

@@ -1 +0,0 @@
{ desktop = true; }

View File

@@ -1,65 +0,0 @@
{
inputs = {
# nixpkgs.follows = "nixos-cosmic/nixpkgs";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flatpaks.url = "github:gmodena/nix-flatpak/?ref=latest";
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixVirt = {
url = "https://flakehub.com/f/AshleyYakeley/NixVirt/*.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
};
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
quickshell = {
url = "git+https://git.outfoxxed.me/quickshell/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
dms-plugin-registry = {
url = "github:AvengeMedia/dms-plugin-registry";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ self, nixpkgs, stylix, home-manager, flatpaks, hytale-launcher, nixVirt, noctalia, quickshell, dms-plugin-registry, ... }:
let
deviceType = import /etc/nixos/device.nix;
system = "x86_64-linux";
in
{
nixosConfigurations.nix = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; inherit (deviceType) desktop; };
modules = [
{
nix.settings = {
substituters = [ "https://cosmic.cachix.org/" ];
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
};
}
flatpaks.nixosModules.nix-flatpak
nixVirt.nixosModules.default
./configuration.nix
];
};
};
}

568
flake.lock generated Normal file
View File

@@ -0,0 +1,568 @@
{
"nodes": {
"base16": {
"inputs": {
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1755819240,
"narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"type": "github"
}
},
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1765809053,
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1760703920,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-helix",
"type": "github"
}
},
"base16-vim": {
"flake": false,
"locked": {
"lastModified": 1732806396,
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1764873433,
"narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92",
"type": "github"
},
"original": {
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1746162366,
"narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1767609335,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flatpaks": {
"locked": {
"lastModified": 1767983141,
"narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "440818969ac2cbd77bfe025e884d0aa528991374",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "latest",
"repo": "nix-flatpak",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
"lastModified": 1731966426,
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "fromYaml",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
"host": "gitlab.gnome.org",
"lastModified": 1767737596,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "gitlab"
},
"original": {
"host": "gitlab.gnome.org",
"owner": "GNOME",
"ref": "gnome-49",
"repo": "gnome-shell",
"type": "gitlab"
}
},
"home-manager": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1770164260,
"narHash": "sha256-mQgOAYWlVJyuyXjZN6yxqXWyODvQI5P/UZUCU7IOuYo=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "4fda26500b4539e0a1e3afba9f0e1616bdad4f85",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"hytale-launcher": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1770238404,
"narHash": "sha256-/ajGYszaZxjboxwNsMaw/EBn+BEp1YIe6geFthy/M6A=",
"owner": "JPyke3",
"repo": "hytale-launcher-nix",
"rev": "bfb52bff72c572f71f621ea7654ea760bc848118",
"type": "github"
},
"original": {
"owner": "JPyke3",
"repo": "hytale-launcher-nix",
"type": "github"
}
},
"nixos-cosmic": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs_3",
"nixpkgs-stable": "nixpkgs-stable",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1751591814,
"narHash": "sha256-A4lgvuj4v+Pr8MniXz1FBG0DXOygi8tTECR+j53FMhM=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "fef2d0c78c4e4d6c600a88795af193131ff51bdc",
"type": "github"
},
"original": {
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1769018530,
"narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "88d3861acdd3d2f0e361767018218e51810df8a1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1751048012,
"narHash": "sha256-MYbotu4UjWpTsq01wglhN5xDRfZYLFtNk7SBY0BcjkU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a684c58d46ebbede49f280b653b9e56100aa3877",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1770115704,
"narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e6eae2ee2110f3d31110d5c222cd395303343b08",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1751011381,
"narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1770181073,
"narHash": "sha256-ksTL7P9QC1WfZasNlaAdLOzqD8x5EPyods69YBqxSfk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bf922a59c5c9998a6584645f7d0de689512e444c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1682134069,
"narHash": "sha256-TnI/ZXSmRxQDt2sjRYK/8j8iha4B4zP2cnQCZZ3vp7k=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fd901ef4bf93499374c5af385b2943f5801c0833",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nur": {
"inputs": {
"flake-parts": [
"stylix",
"flake-parts"
],
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1767810917,
"narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=",
"owner": "nix-community",
"repo": "NUR",
"rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"root": {
"inputs": {
"flatpaks": "flatpaks",
"home-manager": "home-manager",
"hytale-launcher": "hytale-launcher",
"nixos-cosmic": "nixos-cosmic",
"nixpkgs": "nixpkgs_4",
"stylix": "stylix",
"vscode-server": "vscode-server"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"nixos-cosmic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1751251399,
"narHash": "sha256-y+viCuy/eKKpkX1K2gDvXIJI/yzvy6zA3HObapz9XZ0=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "b22d5ee8c60ed1291521f2dde48784edd6bf695b",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"stylix": {
"inputs": {
"base16": "base16",
"base16-fish": "base16-fish",
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur",
"systems": "systems",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1769978605,
"narHash": "sha256-Vjniae6HHJCb9xZLeUOP15aRQXSZuKeeaZFM+gRDCgo=",
"owner": "nix-community",
"repo": "stylix",
"rev": "ce22070ec5ce6169a6841da31baea33ce930ed38",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "stylix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
"lastModified": 1735730497,
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-kitty",
"type": "github"
}
},
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1767710407,
"narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "schemes",
"type": "github"
}
},
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1767489635,
"narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-tmux",
"type": "github"
}
},
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1767488740,
"narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-zed",
"type": "github"
}
},
"vscode-server": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1770124655,
"narHash": "sha256-yHmd2B13EtBUPLJ+x0EaBwNkQr9LTne1arLVxT6hSnY=",
"owner": "nix-community",
"repo": "nixos-vscode-server",
"rev": "92ce71c3ba5a94f854e02d57b14af4997ab54ef0",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixos-vscode-server",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

81
flake.nix Normal file
View File

@@ -0,0 +1,81 @@
{
inputs = {
# nixpkgs.follows = "nixos-cosmic/nixpkgs";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flatpaks.url = "github:gmodena/nix-flatpak/?ref=latest";
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
vscode-server.url = "github:nix-community/nixos-vscode-server";
home-manager.url = "github:nix-community/home-manager";
};
outputs = inputs@{ self, nixpkgs, stylix, home-manager, flatpaks, hytale-launcher, vscode-server, ... }:
let
deviceType = import ./device.nix;
system = "x86_64-linux";
in
{
nixosConfigurations = {
nix = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; inherit (deviceType) device; };
modules = [
{
nix.settings = {
substituters = [ "https://cosmic.cachix.org/" ];
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
};
}
flatpaks.nixosModules.nix-flatpak
./main.nix
];
};
box = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; inherit (deviceType) device; };
modules = [
./main.nix
flatpaks.nixosModules.nix-flatpak
vscode-server.nixosModules.default
];
};
};
homeConfigurations = {
bug = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {
inherit inputs;
inherit (deviceType) device;
};
modules = [
stylix.homeManagerModules.stylix
./home.nix
];
};
};
};
}

122
home.nix Normal file
View File

@@ -0,0 +1,122 @@
{inputs, config, pkgs, device, ... }:
{
home = {
username = "bug";
homeDirectory = "/home/bug";
stateVersion = "25.11";
packages = [];
file = {};
sessionVariables = {
EDITOR = "micro";
MICRO_TRUECOLOR = 1;
};
};
nixpkgs.config.allowUnfree = true;
programs.home-manager.enable = true;
services.syncthing = {
enable = true;
overrideDevices = true;
overrideFolders = true;
key = "/home/bug/.syncthing/key.pem";
cert = "/home/bug/.syncthing/cert.pem";
settings = {
devices = {
desktop.id = "VEZXY3W-U6UXWTP-6BHANIG-O5EKNZY-XNV5YOX-4V4O3HB-ETECIUX-T2DK7AV";
laptop.id = "I6NW53P-IJMMT73-7O53TXY-3GAHS2U-4EAADM7-ZNB5ZPB-62QHKVW-H7DYXQ2";
server.id = "KJECAIP-Y2Y3FHV-NOJKIQV-LWIDMMZ-5ITEAZ4-LQCQL72-3BGW6T7-BFPFJQA";
};
folders = {
"Documents" = {
path = "/home/bug/Documents";
devices = ["desktop" "laptop"];
};
"Downloads" = {
path = "/home/bug/Downloads";
devices = ["desktop" "laptop"];
};
"Pictures" = {
path = "/home/bug/Pictures";
devices = ["desktop" "laptop"];
};
"Videos" = {
path = "/home/bug/Videos";
devices = ["desktop" "laptop"];
};
"nix" = {
path = "/home/bug/nix";
devices = ["desktop" "laptop" "server"];
ignorePatterns = [
"device.nix"
"hardware-configuration.nix"
];
};
"home-manager" = {
path = "/home/bug/.config/home-manager";
devices = ["desktop" "laptop"];
};
"hytale" = {
path = "/home/bug/.local/share/Hytale/UserData/Saves";
devices = ["desktop" "laptop"];
};
"ssh" = {
path = "/home/bug/.ssh";
devices = ["desktop" "laptop"];
};
};
};
};
stylix = {
enable = (device != "server");
autoEnable = true;
polarity = "dark";
# catppuccin mocha
base16Scheme = {
base00 = "1E1E2E";
base01 = "181825";
base02 = "313244";
base03 = "45475A";
base04 = "585B70";
base05 = "CDD6F4";
base06 = "F5E0DC";
base07 = "B4BEFE";
base08 = "F38BA8";
base09 = "FAB387";
base0A = "F9E2AF";
base0B = "A6E3A1";
base0C = "94E2D5";
base0D = "89B4FA";
base0E = "CBA6F7";
base0F = "F2CDCD";
};
fonts.emoji = {
name = "Twitter Color Emoji";
package = pkgs.twitter-color-emoji;
};
targets = {
vesktop.enable = true;
gnome.enable = true;
gtk.enable = true;
firefox.enable = true;
};
};
}

722
main.nix
View File

@@ -1,24 +1,33 @@
{ lib, config, inputs, pkgs, options, desktop, ... }: { lib, config, inputs, pkgs, options, device, ... }:
let
#inherit (inputs) nixVirt;
#nixvirt.lib = nixVirt.lib;
nix-gaming = import (builtins.fetchTarball "https://github.com/fufexan/nix-gaming/archive/master.tar.gz");
nix-alien = import (
builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master"
) {};
#nvramPath = "/home/bug/.local/share/libvirt/qemu";
#win10Config = import ./vms/win10.nix { inherit pkgs nvramPath; uuid = "c08333dc-33f9-4117-969a-ac46e19ba81f"; };
in
{ {
imports = [ imports = [
/etc/nixos/hardware-configuration.nix /etc/nixos/hardware-configuration.nix
nix-gaming.nixosModules.platformOptimizations
nix-gaming.nixosModules.pipewireLowLatency ./modules/users.nix
]; ./modules/boot.nix
./modules/network.nix
./modules/locale.nix
./modules/security.nix
] ++ (if device == "server" then [
./modules/packages.nix
./modules/vscode-server.nix
({ pkgs, ... }: {
environment.systemPackages = with pkgs; [
nh comma nix-index home-manager micro wget git fastfetch
];
})
] else [
./modules/packages.nix
./modules/cosmic.nix
./modules/graphics.nix
./modules/audio.nix
./modules/home-manager.nix
./modules/mpd.nix
./modules/swap.nix
./modules/virtualisation.nix
]);
system = { system = {
stateVersion = "25.11"; stateVersion = "25.11";
@@ -29,558 +38,17 @@ in
}; };
}; };
nix.optimise.automatic = true; nix = {
nix.settings.experimental-features = [ "nix-command" "flakes" ]; optimise.automatic = true;
settings.experimental-features = [ "nix-command" "flakes" ];
users.users.bug = {
isNormalUser = true;
description = "Bug";
extraGroups = [ "networkmanager" "wheel" "audio" "video" "libvirtd" "ydotool" "dialout" ];
};
hardware = {
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
libva-vdpau-driver
libvdpau
libvdpau-va-gl
vdpauinfo
libva
libva-utils
libglvnd
mesa
] ++ (if desktop then [
nvidia-vaapi-driver
] else [
]);
};
nvidia = if desktop then {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
nvidiaPersistenced = true;
} else {};
enableRedistributableFirmware = true;
};
systemd.user.extraConfig = ''
DefaultEnvironment="PATH=/run/current-system/sw/bin"
'';
systemd.services.monitord.wantedBy = [ "multi-user.target" ];
systemd.services.mpd.environment = {
XDG_RUNTIME_DIR = "/run/user/1000";
};
boot = {
kernelModules = if desktop then ["nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" "uinput"] else [];
kernelParams = if desktop then ["nvidia-drm.modeset=1" "nvidia_drm.fbdev=1"] else [];
kernelPackages = pkgs.linuxPackages_zen;
kernel.sysctl = {
"fs.file-max" = 524288;
};
initrd.checkJournalingFS = false;
loader = {
grub.splashImage = null;
systemd-boot.enable = true;
systemd-boot.configurationLimit = 25;
efi.canTouchEfiVariables = true;
};
};
swapDevices = [{
device = "/var/lib/swapfile";
size = 8 * 1024;
}];
zramSwap = {
enable = true;
memoryMax = 64 * 1024 * 1024 * 1024;
};
time.timeZone = "America/Chicago";
i18n = {
defaultLocale = "en_US.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
};
networking = {
hostName = "nix";
networkmanager.enable = true;
nameservers = ["1.1.1.1" "1.0.0.1"];
};
services.cloudflare-warp.enable = !desktop;
security = {
rtkit.enable = true;
polkit.enable = true;
sudo = {
enable = true;
wheelNeedsPassword = false;
};
};
xdg = {
portal = {
enable = true;
xdgOpenUsePortal = true;
config = {
common.default = ["gtk"];
};
extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-cosmic];
};
mime = {
enable = true;
defaultApplications = {
"text/html" = "firefox.desktop";
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/about" = "firefox.desktop";
"x-scheme-handler/unknown" = "firefox.desktop";
"application/pdf" = "firefox.desktop";
"inode/directory" = "com.system76.CosmicFiles.desktop";
"text/plain" = "com.system76.CosmicEdit.desktop";
"text/markdown" = "com.system76.CosmicEdit.desktop";
"application/zip" = "org.gnome.FileRoller.desktop";
"application/x-7z-compressed" = "org.gnome.FileRoller.desktop";
"application/x-tar" = "org.gnome.FileRoller.desktop";
"application/gzip" = "org.gnome.FileRoller.desktop";
"application/x-xz" = "org.gnome.FileRoller.desktop";
"application/x-zip-compressed" = "org.gnome.FileRoller.desktop";
"application/x-ms-dos-executable" = "wine.desktop";
};
};
};
services = {
greetd.enable = true;
logind.settings.Login = {
HandleLidSwitch = "ignore";
HandleLidSwitchDocked = "ignore";
};
system76-scheduler.enable = true;
displayManager = {
cosmic-greeter.enable = true;
autoLogin = {
enable = desktop;
user = "bug";
};
};
desktopManager = {
cosmic.enable = true;
};
xserver = {
enable = true;
videoDrivers = if desktop then ["nvidia"] else ["amdgpu"];
excludePackages = [pkgs.xterm];
xkb = {
layout = "us";
variant = "";
};
};
fstrim.enable = true;
openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
PermitRootLogin = "no";
PubkeyAuthentication = true;
X11Forwarding = true;
AllowTcpForwarding = true;
};
};
pulseaudio.enable = false;
pipewire = {
enable = true;
wireplumber.enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
lowLatency.enable = false;
jack.enable = true;
};
mpd = {
enable = !desktop;
settings = {
music_directory = "/run/media/bug/Music/";
decoder = [
{
plugin = "ffmpeg";
enabled = "yes";
}
{
plugin = "opus";
enabled = "no";
}
];
audio_output = [{
type = "pipewire";
name = "PipeWire Sound Server";
}];
};
user = "bug";
};
ollama = {
enable = false;
loadModels = [ "llama3.2:3b" "deepseek-r1:1.5b" "deepseek-r1:8b"];
};
flatpak = {
enable = true;
remotes = lib.mkOptionDefault [{
name = "flathub-beta";
location = "https://flathub.org/beta-repo/flathub-beta.flatpakrepo";
}];
update.auto.enable = true;
uninstallUnmanaged = true;
packages = [
"org.vinegarhq.Sober"
"org.vinegarhq.Vinegar"
"org.gnome.Decibels"
"org.pipewire.Helvum"
"community.pathofbuilding.PathOfBuilding"
{
appId = "com.hytale.Launcher";
sha256 = "sha256-SUxfyovC2umZmsOj5bOTZ8WfGCpnWcz7svOESwNekV0=";
bundle = "${pkgs.fetchurl {
url = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-latest.flatpak";
sha256 = "sha256-SUxfyovC2umZmsOj5bOTZ8WfGCpnWcz7svOESwNekV0=";
}}";
}
# add Polytoria client
# https://cdn.polytoria.com/releases/installer/linux/Polytoria%20Setup%204.12.0.flatpak
{
appId = "com.polytoria.launcher";
sha256 = "sha256-VjhNiJfSdCtlH2SuP3Mn8jjOrx5xcOqhtDKaWYIwxYg=";
bundle = "${pkgs.fetchurl {
url = "https://github.com/4DBug/poly/releases/download/poly/poly.flatpak";
sha256 = "sha256-VjhNiJfSdCtlH2SuP3Mn8jjOrx5xcOqhtDKaWYIwxYg=";
}}";
}
];
overrides = {
global = {
Context.sockets = ["wayland" "!x11" "!fallback-x11"];
};
};
};
};
fonts = {
fontDir.enable = true;
enableDefaultPackages = true;
packages = with pkgs; [
twitter-color-emoji
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
];
fontconfig = {
enable = true;
useEmbeddedBitmaps = true;
defaultFonts = {
emoji = [ "Twitter Color Emoji" ];
};
};
};
users.users.bug.packages = with pkgs; [
vscode
(luajit.withPackages (ps: with ps; [
luasocket
bit32
]))
go
(python3.withPackages (ps: with ps; [
unidecode
discordpy
setuptools
pip
pynput
python-uinput
mido
pyautogui
pygobject3
pycairo
tkinter
numpy
scipy
imageio
evdev
]))
nodejs
(blender.withPackages (ps: with ps; [
libGLU
gcc
zlib
xorg.libX11
fontconfig
pcre2
xorg.libXext
xorg.libxcb
glib
]))
plasticity
obsidian
vesktop
nicotine-plus
fastfetch
tree
gh
scanmem
samrewritten
impression
mission-center
authenticator
steamtinkerlaunch
obs-studio
#prismlauncher
euphonica
kooha
loupe
arduino-ide
];
environment = {
variables = {
MICRO_TRUECOLOR = 1;
} // (if desktop then {
WGPU_BACKEND = "gl";
GBM_BACKEND = "nvidia-drm";
LIBVA_DRIVER_NAME = "nvidia";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
EGL_PLATFORM = "wayland";
} else {
});
sessionVariables = {
BROWSER = "firefox";
COSMIC_DATA_CONTROL_ENABLED = 1;
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
NIXPKGS_ALLOW_UNFREE = 1;
} // (if desktop then {
WGPU_BACKEND = "gl";
GBM_BACKEND = "nvidia-drm";
LIBVA_DRIVER_NAME = "nvidia";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
EGL_PLATFORM = "wayland";
} else {
});
systemPackages = with pkgs; [
home-manager
comma
nix-index
git
wget
gcc
gnumake
nmap
inetutils
nix-prefetch
nix-output-monitor
nvd
nixfmt
nixd
nil
nh
gnome-boxes
openjdk
zlib
glfw
glew
wine64
wineWow64Packages.full
lug-helper
appimage-run
vulkan-tools
vulkan-validation-layers
vulkan-loader
pulseaudioFull
gamemode
winetricks
steam-run
firmware-updater
cosmic-applets
cosmic-edit
cosmic-ext-calculator
cosmic-ext-tweaks
cosmic-screenshot
quick-webapps
nix-alien.nix-alien
file-roller
unzip
xdg-desktop-portal-gtk
xdg-desktop-portal-cosmic
mangohud
mesa-demos
lutris
gnome-software
neovim
micro
inputs.hytale-launcher.packages.${pkgs.system}.default
baobab
] ++ (if desktop then [
(nix-gaming.packages.${pkgs.stdenv.hostPlatform.system}.star-citizen.override {
tricks = [ "arial" "vcrun2019" "win10" "sound=alsa" ];
})
libxshmfence
(appimage-run.override {
extraPkgs = pkgs: [ pkgs.xorg.libxshmfence pkgs.linuxPackages.nvidia_x11 ];
})
] else [
(nix-gaming.packages.${pkgs.stdenv.hostPlatform.system}.star-citizen.override {
tricks = [ "arial" "vcrun2019" "win10" "sound=alsa" ];
})
bambu-studio
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
kitty
]);
}; };
nixpkgs = { nixpkgs = {
config = { config = {
allowUnfree = true; allowUnfree = true;
cudaSupport = desktop; cudaSupport = (device == "desktop");
nvidia.acceptLicense = desktop; nvidia.acceptLicense = (device == "desktop");
}; };
overlays = [ overlays = [
@@ -588,80 +56,28 @@ in
]; ];
}; };
virtualisation = { environment.sessionVariables.NIXPKGS_ALLOW_UNFREE = 1;
/*
libvirt = {
enable = true;
connections."qemu:///system" = { systemd = {
networks = [ user.extraConfig = ''
{ DefaultEnvironment="PATH=/run/current-system/sw/bin"
definition = nixvirt.lib.network.writeXML (nixvirt.lib.network.templates.bridge { '';
name = "default";
uuid = "cda3b7dd-71fd-44e3-8093-340f47a88c83";
subnet_byte = 122;
bridge_name = "virbr0";
});
active = true; services.monitord.wantedBy = [ "multi-user.target" ];
}
];
domains = lib.mkForce [
{ definition = nixvirt.lib.domain.writeXML win10Config; }
];
};
};
*/
libvirtd.enable = true;
spiceUSBRedirection.enable = true;
}; };
services.fstrim.enable = true;
programs = { programs = {
hyprland.enable = !desktop;
labwc.enable = !desktop;
dms-shell = {
enable = false; # !desktop;
enableSystemMonitoring = true;
enableClipboard = true;
enableDynamicTheming = true;
enableAudioWavelength = true;
enableCalendarEvents = true;
plugins = {
#nixMonitor.enable = true;
DankNixMonitor = {
enable = true;
src = pkgs.fetchFromGitHub {
owner = "antonjah";
repo = "nix-monitor";
rev = "f3dbe00";
hash = "sha256-biRc7ESKzPK5Ueus1xjVT8OXCHar3+Qi+Osv/++A+Ls=";
};
};
};
};
appimage = {
enable = true;
binfmt = true;
};
bash.shellAliases = { bash.shellAliases = {
fetch = "fastfetch --file ~/nix/nix.ans"; fetch = "fastfetch --file ~/nix/nix.ans";
neofetch = "fetch";
rebuild = "sudo nixos-rebuild switch --impure"; # home-manager switch --impure rebuild = "ns os switch ~/nix"; #"sudo nixos-rebuild switch --impure"; # home-manager switch --impure
#pissh = "ssh -t $(avahi-resolve-host-name -4 pi.home | awk '{print $2}')"; #pissh = "ssh -t $(avahi-resolve-host-name -4 pi.home | awk '{print $2}')";
#pi = "pissh \"cd $(pwd) && bash\""; #pi = "pissh \"cd $(pwd) && bash\"";
pi = "ssh pi.bug.tools"; #pi = "ssh pi.bug.tools";
box = "ssh box.bug.tools";
pico = "ssh pico.sh"; pico = "ssh pico.sh";
@@ -681,59 +97,5 @@ ssh -R \"$\{name}:80:localhost:$\{port}\" tuns.sh'\'' _";
hytale = "env -u WAYLAND_DISPLAY -u EGL_PLATFORM -u ELECTRON_ENABLE_WAYLAND DISPLAY=:0 XDG_SESSION_TYPE=x11 __GLX_VENDOR_LIBRARY_NAME=nvidia LD_LIBRARY_PATH=/run/opengl-driver/lib hytale-launcher"; hytale = "env -u WAYLAND_DISPLAY -u EGL_PLATFORM -u ELECTRON_ENABLE_WAYLAND DISPLAY=:0 XDG_SESSION_TYPE=x11 __GLX_VENDOR_LIBRARY_NAME=nvidia LD_LIBRARY_PATH=/run/opengl-driver/lib hytale-launcher";
}; };
firefox = {
enable = true;
package = pkgs.firefox-bin;
};
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = false;
localNetworkGameTransfers.openFirewall = true;
gamescopeSession.enable = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
platformOptimizations.enable = true;
};
ydotool.enable = true;
gamescope = {
enable = true;
capSysNice = true;
args = [
"--rt"
"--expose-wayland"
];
};
virt-manager.enable = true;
nix-ld = {
enable = true;
libraries = options.programs.nix-ld.libraries.default ++ (with pkgs; [
libxml2
udev
gcc
egl-wayland
mesa
libglvnd
wayland
xorg.libX11
xorg.libXcursor
xorg.libXrandr
xorg.libXi
]);
};
}; };
} }

View File

@@ -20,5 +20,5 @@
jack.enable = true; jack.enable = true;
}; };
} };
} }

View File

@@ -7,10 +7,6 @@
kernelPackages = pkgs.linuxPackages_zen; kernelPackages = pkgs.linuxPackages_zen;
kernel.sysctl = {
"fs.file-max" = 524288;
};
initrd.checkJournalingFS = false; initrd.checkJournalingFS = false;
loader = { loader = {
@@ -24,14 +20,4 @@
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;
}; };
}; };
swapDevices = [{
device = "/var/lib/swapfile";
size = 8 * 1024;
}];
zramSwap = {
enable = true;
memoryMax = 64 * 1024 * 1024 * 1024;
};
} }

View File

@@ -29,14 +29,14 @@
libva-utils libva-utils
libglvnd libglvnd
mesa mesa
] ++ (if desktop then [ ] ++ (if (device == "desktop") then [
nvidia-vaapi-driver nvidia-vaapi-driver
] else [ ] else [
]); ]);
}; };
nvidia = if desktop then { nvidia = if (device == "desktop") then {
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = false; powerManagement.enable = false;
@@ -80,4 +80,9 @@
}); });
}; };
services.logind.settings.Login = {
HandleLidSwitch = "ignore";
HandleLidSwitchDocked = "ignore";
};
} }

View File

@@ -1,4 +1,4 @@
{ lib, config, inputs, pkgs, options, desktop, ... }: { lib, config, inputs, pkgs, options, device, ... }:
let let
nix-gaming = import (builtins.fetchTarball "https://github.com/fufexan/nix-gaming/archive/master.tar.gz"); nix-gaming = import (builtins.fetchTarball "https://github.com/fufexan/nix-gaming/archive/master.tar.gz");
@@ -192,7 +192,7 @@ in
inputs.hytale-launcher.packages.${pkgs.system}.default inputs.hytale-launcher.packages.${pkgs.system}.default
baobab baobab
] ++ (if desktop then [ ] ++ (if (device == "desktop") then [
(nix-gaming.packages.${pkgs.stdenv.hostPlatform.system}.star-citizen.override { (nix-gaming.packages.${pkgs.stdenv.hostPlatform.system}.star-citizen.override {
tricks = [ "arial" "vcrun2019" "win10" "sound=alsa" ]; tricks = [ "arial" "vcrun2019" "win10" "sound=alsa" ];
}) })

View File

@@ -1 +0,0 @@
{ device = "laptop"; } # Possible values: "desktop", "laptop", "server"

View File

@@ -1,8 +0,0 @@
{ lib, config, inputs, pkgs, options, desktop, ... }:
{
imports = [
../modules/cosmic.nix
../modules/graphics.nix
]
}

View File

@@ -1,8 +0,0 @@
{ config, pkgs, device, ... }:
{
services.logind.settings.Login = {
HandleLidSwitch = "ignore";
HandleLidSwitchDocked = "ignore";
};
}

View File

@@ -1,22 +0,0 @@
{ config, pkgs, ... }:
{
imports = [
../modules/vscode-server.nix
../modules/mailserver.nix
];
environment.systemPackages = with pkgs; [
nh
comma
nix-index
home-manager
micro
wget
git
fastfetch
];
}

View File

@@ -1,48 +0,0 @@
{
inputs = {
# nixpkgs.follows = "nixos-cosmic/nixpkgs";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flatpaks.url = "github:gmodena/nix-flatpak/?ref=latest";
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
vscode-server.url = "github:nix-community/nixos-vscode-server";
};
outputs = inputs@{ self, nixpkgs, stylix, home-manager, flatpaks, hytale-launcher, vscode-server, ... }:
let
deviceType = import /etc/nixos/device.nix;
system = "x86_64-linux";
in
{
nixosConfigurations.nix = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; inherit (deviceType) desktop; };
modules = [
{
nix.settings = {
substituters = [ "https://cosmic.cachix.org/" ];
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
};
}
flatpaks.nixosModules.nix-flatpak
vscode-server.nixosModules.default
./configuration.nix
];
};
};
}

View File

@@ -1,101 +0,0 @@
{ lib, config, inputs, pkgs, options, device, ... }:
{
imports = [
/etc/nixos/hardware-configuration.nix
./modules/users.nix
./modules/boot.nix
./modules/network.nix
./modules/locale.nix
./modules/security.nix
] ++ (if device == "server" then [
./modules/packages.nix
./modules/vscode-server.nix
({ config, pkgs, ... }: {
environment.systemPackages = with pkgs; [
nh comma nix-index home-manager micro wget git fastfetch
];
})
] else [
./modules/packages.nix
./modules/cosmic.nix
./modules/graphics.nix
./modules/audio.nix
./modules/home-manager.nix
./modules/mpd.nix
./modules/swap.nix
./modules/virtualisation.nix
]);
system = {
stateVersion = "25.11";
autoUpgrade = {
enable = true;
allowReboot = true;
};
};
nix = {
optimise.automatic = true;
settings.experimental-features = [ "nix-command" "flakes" ];
};
nixpkgs = {
config = {
allowUnfree = true;
cudaSupport = (device == "desktop");
nvidia.acceptLicense = (device == "desktop");
};
overlays = [
];
};
environment.sessionVariables.NIXPKGS_ALLOW_UNFREE = 1;
systemd = {
user.extraConfig = ''
DefaultEnvironment="PATH=/run/current-system/sw/bin"
'';
services.monitord.wantedBy = [ "multi-user.target" ];
};
services.fstrim.enable = true;
programs = {
bash.shellAliases = {
fetch = "fastfetch --file ~/nix/nix.ans";
rebuild = "ns os switch ~/nix"; #"sudo nixos-rebuild switch --impure"; # home-manager switch --impure
#pissh = "ssh -t $(avahi-resolve-host-name -4 pi.home | awk '{print $2}')";
#pi = "pissh \"cd $(pwd) && bash\"";
#pi = "ssh pi.bug.tools";
box = "ssh box.bug.tools";
pico = "ssh pico.sh";
# tuns name port
tuns = "bash -c '\''if [ \"$#\" -ne 2 ]; then echo \"Usage: tun name port\"; exit 1; fi;
if [[ \"$1\" =~ ^[0-9]+$ ]]; then port=\"$1\"; name=\"$2\";
elif [[ \"$2\" =~ ^[0-9]+$ ]]; then port=\"$2\"; name=\"$1\";
else echo \"Error: One argument must be a number (port)\"; exit 1; fi;
ssh -R \"$\{name}:80:localhost:$\{port}\" tuns.sh'\'' _";
# pgs name directory
pgs = "bash -c '\''if [ \"$#\" -ne 2 ]; then echo \"Usage: pgs NAME DIRECTORY\"; exit 1; fi; rsync -rv \"$2\" pgs.sh:/\"$1\"'\'' _";
bambu = "env -u WAYLAND_DISPLAY XDG_SESSION_TYPE=x11 WEBKIT_FORCE_COMPOSITING_MODE=1 WEBKIT_DISABLE_COMPOSITING_MODE=1 GBM_BACKEND=dri bambu-studio";
scale = "env GDK_BACKEND=x11 GDK_SCALE=1 GDK_DPI_SCALE=1";
hytale = "env -u WAYLAND_DISPLAY -u EGL_PLATFORM -u ELECTRON_ENABLE_WAYLAND DISPLAY=:0 XDG_SESSION_TYPE=x11 __GLX_VENDOR_LIBRARY_NAME=nvidia LD_LIBRARY_PATH=/run/opengl-driver/lib hytale-launcher";
};
};
}

View File

@@ -1,314 +0,0 @@
{
nvramPath,
pkgs,
uuid,
}:
{
inherit uuid;
type = "kvm";
title = "Windows 10";
name = "win10";
description = "A Windows 10 vm define in nix";
sysinfo = {
type = "smbios";
bios.entry = [
{
name = "vendor";
value = "INSYDE Corp.";
}
{
name = "version";
value = "03.02";
}
{
name = "date";
value = "01/23/2024";
}
];
system.entry = [
{
name = "manufacturer";
value = "Framework";
}
{
name = "product";
value = "Laptop 16 (AMD Ryzen 7040 Series)";
}
{
name = "version";
value = "AG";
}
{
name = "serial";
value = "FRAGADDPAG4096006K";
}
{
name = "uuid";
value = uuid;
}
{
name = "sku";
value = "FRAGACCP0G";
}
{
name = "family";
value = "16in";
}
];
};
vcpu = {
count = 4;
placement = "static";
};
memory = {
count = 16;
unit = "GiB";
};
cputune = {
vcpupin = [
{
vcpu = 0;
cpuset = "4";
}
{
vcpu = 1;
cpuset = "5";
}
{
vcpu = 2;
cpuset = "6";
}
{
vcpu = 3;
cpuset = "7";
}
];
};
cpu = {
mode = "host-passthrough";
check = "none";
migratable = true;
cache = {
level = 3;
mode = "emulate";
};
feature = [
{
policy = "disable";
name = "hypervisor";
}
{
policy = "require";
name = "svm";
}
{
policy = "require";
name = "topoext";
}
];
topology = {
sockets = 1;
dies = 1;
cores = 2;
threads = 2;
};
};
# OS
os = {
type = "hvm";
arch = "x86_64";
machine = "pc-q35-8.2";
loader = {
readonly = true;
type = "pflash";
path = "${pkgs.OVMFFull.fd}/FV/OVMF_CODE.ms.fd";
};
nvram = {
template = "${pkgs.OVMFFull.fd}/FV/OVMF_VARS.ms.fd";
path = "${nvramPath}/win10gpu.nvram";
};
smbios.mode = "sysinfo";
};
features = {
acpi = { };
apic = { };
hyperv = {
mode = "custom";
relaxed = {
state = true;
};
vapic = {
state = true;
};
spinlocks = {
state = true;
retries = 8191;
};
vendor_id = {
state = true;
value = "1234567890ab";
};
};
kvm.hidden = {
state = true;
};
vmport.state = false;
};
clock = {
offset = "localtime";
timer = [
{
name = "rtc";
tickpolicy = "catchup";
}
{
name = "pit";
tickpolicy = "delay";
}
{
name = "hpet";
present = false;
}
{
name = "hypervclock";
present = true;
}
];
};
pm = {
suspend-to-mem = {
enabled = false;
};
suspend-to-disk = {
enabled = false;
};
};
devices = {
emulator = "${pkgs.qemu}/bin/qemu-system-x86_64";
# Disks
hostdev = [];
# Input
input = [
{
type = "keyboard";
bus = "virtio";
}
{
type = "mouse";
bus = "virtio";
}
];
# Video + Audio
graphics = {
type = "spice";
autoport = true;
listen = {
type = "address";
};
image = {
compression = false;
};
};
video = {
model = {
type = "vga";
vram = 65536;
heads = 1;
primary = true;
};
};
sound = {
model = "ich9";
};
audio = {
id = 1;
type = "spice";
};
# Interfaces
controller = [
{
type = "usb";
index = 0;
model = "qemu-xhci";
ports = 15;
}
{
type = "pci";
index = 0;
model = "pcie-root";
}
{
type = "virtio-serial";
index = 0;
}
];
serial = [
{
type = "pty";
target = {
type = "isa-serial";
port = 0;
model.name = "isa-serial";
};
}
];
console = [
{
type = "pty";
target = {
type = "serial";
port = 0;
};
}
];
channel = [
{
type = "spicevmc";
target = {
type = "virtio";
name = "com.redhat.spice.0";
};
}
];
# Other
watchdog = {
model = "itco";
action = "reset";
};
memballoon.model = "none";
};
qemu-commandline = {
arg = [
{ value = "-cpu"; }
{ value = "host,kvm=off,hv_time,hv_vendor_id=null,-hypervisor"; }
{ value = "-machine"; }
{ value = "q35"; }
{ value = "-device"; }
{ value = "{\"driver\":\"ivshmem-plain\",\"id\":\"shmem0\",\"memdev\":\"looking-glass\"}"; }
{ value = "-object"; }
{
value = "{\"qom-type\":\"memory-backend-file\",\"id\":\"looking-glass\",\"mem-path\":\"/dev/kvmfr0\",\"size\":134217728,\"share\":true}";
}
];
};
}