push
This commit is contained in:
1
new/device.nix
Normal file
1
new/device.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{ device = "laptop"; } # Possible values: "desktop", "laptop", "server"
|
||||||
8
new/devices/desktop.nix
Normal file
8
new/devices/desktop.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ lib, config, inputs, pkgs, options, desktop, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../modules/cosmic.nix
|
||||||
|
../modules/graphics.nix
|
||||||
|
]
|
||||||
|
}
|
||||||
8
new/devices/laptop.nix
Normal file
8
new/devices/laptop.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.logind.settings.Login = {
|
||||||
|
HandleLidSwitch = "ignore";
|
||||||
|
HandleLidSwitchDocked = "ignore";
|
||||||
|
};
|
||||||
|
}
|
||||||
22
new/devices/server.nix
Normal file
22
new/devices/server.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../modules/vscode-server.nix
|
||||||
|
../modules/mailserver.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
nh
|
||||||
|
comma
|
||||||
|
nix-index
|
||||||
|
|
||||||
|
home-manager
|
||||||
|
|
||||||
|
micro
|
||||||
|
wget
|
||||||
|
git
|
||||||
|
|
||||||
|
fastfetch
|
||||||
|
];
|
||||||
|
}
|
||||||
48
new/flake.nix
Normal file
48
new/flake.nix
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
101
new/main.nix
Normal file
101
new/main.nix
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
{ 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
24
new/modules/audio.nix
Normal file
24
new/modules/audio.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
services = {
|
||||||
|
pulseaudio.enable = false;
|
||||||
|
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
wireplumber.enable = true;
|
||||||
|
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
|
||||||
|
pulse.enable = true;
|
||||||
|
|
||||||
|
lowLatency.enable = false;
|
||||||
|
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
37
new/modules/boot.nix
Normal file
37
new/modules/boot.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot = {
|
||||||
|
kernelModules = if (device == "desktop") then ["nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" "uinput"] else [];
|
||||||
|
kernelParams = if (device == "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;
|
||||||
|
configurationLimit = 25;
|
||||||
|
};
|
||||||
|
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [{
|
||||||
|
device = "/var/lib/swapfile";
|
||||||
|
size = 8 * 1024;
|
||||||
|
}];
|
||||||
|
|
||||||
|
zramSwap = {
|
||||||
|
enable = true;
|
||||||
|
memoryMax = 64 * 1024 * 1024 * 1024;
|
||||||
|
};
|
||||||
|
}
|
||||||
62
new/modules/cosmic.nix
Normal file
62
new/modules/cosmic.nix
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
greetd.enable = true;
|
||||||
|
|
||||||
|
system76-scheduler.enable = true;
|
||||||
|
|
||||||
|
displayManager = {
|
||||||
|
cosmic-greeter.enable = true;
|
||||||
|
|
||||||
|
autoLogin = {
|
||||||
|
enable = (device == "desktop");
|
||||||
|
user = "bug";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
desktopManager.cosmic.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
COSMIC_DATA_CONTROL_ENABLED = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
83
new/modules/graphics.nix
Normal file
83
new/modules/graphics.nix
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
videoDrivers = if (device == "desktop") then ["nvidia"] else ["amdgpu"];
|
||||||
|
excludePackages = [pkgs.xterm];
|
||||||
|
|
||||||
|
xkb = {
|
||||||
|
layout = "us";
|
||||||
|
variant = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
variables = {
|
||||||
|
|
||||||
|
} // (if (device == "desktop") then {
|
||||||
|
WGPU_BACKEND = "gl";
|
||||||
|
GBM_BACKEND = "nvidia-drm";
|
||||||
|
LIBVA_DRIVER_NAME = "nvidia";
|
||||||
|
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||||
|
EGL_PLATFORM = "wayland";
|
||||||
|
} else {
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
sessionVariables = {
|
||||||
|
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
|
||||||
|
} // (if (device == "desktop") then {
|
||||||
|
WGPU_BACKEND = "gl";
|
||||||
|
GBM_BACKEND = "nvidia-drm";
|
||||||
|
LIBVA_DRIVER_NAME = "nvidia";
|
||||||
|
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||||
|
EGL_PLATFORM = "wayland";
|
||||||
|
} else {
|
||||||
|
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
4
new/modules/home-manager.nix
Normal file
4
new/modules/home-manager.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
21
new/modules/locale.nix
Normal file
21
new/modules/locale.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
45
new/modules/mailserver.nix
Normal file
45
new/modules/mailserver.nix
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
(builtins.fetchTarball {
|
||||||
|
url = "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/master.tar.gz";
|
||||||
|
|
||||||
|
sha256 = "0xlhl8zhcz5c6hvmpkfw9ay2lfnk6nhax8pphvbv3vzxf1p9dhw9";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
defaults.email = "security@bug.tools";
|
||||||
|
|
||||||
|
certs."mail.bug.tools" = {
|
||||||
|
listenHTTP = "1360";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mailserver = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
stateVersion = 3;
|
||||||
|
|
||||||
|
fqdn = "mail.bug.tools";
|
||||||
|
domains = [ "bug.tools" ];
|
||||||
|
|
||||||
|
x509.useACMEHost = "mail.bug.tools";
|
||||||
|
|
||||||
|
loginAccounts = {
|
||||||
|
"bug@bug.tools" = {
|
||||||
|
hashedPasswordFile = "/home/bug/mailserver/bug.passwd";
|
||||||
|
aliases = [
|
||||||
|
"admin@bug.tools"
|
||||||
|
"google@bug.tools"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"pare@bug.tools" = {
|
||||||
|
hashedPasswordFile = "/home/bug/mailserver/pare.passwd";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
37
new/modules/mpd.nix
Normal file
37
new/modules/mpd.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
mpd = {
|
||||||
|
enable = (device == "laptop");
|
||||||
|
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services = {
|
||||||
|
mpd.environment = {
|
||||||
|
XDG_RUNTIME_DIR = "/run/user/1000";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
25
new/modules/network.nix
Normal file
25
new/modules/network.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
networking = {
|
||||||
|
hostName = if (device == "server") then "box" else "nix";
|
||||||
|
|
||||||
|
networkmanager.enable = true;
|
||||||
|
|
||||||
|
nameservers = ["1.1.1.1" "1.0.0.1"];
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
cloudflare-warp.enable = (device == "laptop");
|
||||||
|
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
PrintMotd = true;
|
||||||
|
X11Forwarding = true;
|
||||||
|
AllowTcpForwarding = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
344
new/modules/packages.nix
Normal file
344
new/modules/packages.nix
Normal file
@@ -0,0 +1,344 @@
|
|||||||
|
{ lib, config, inputs, pkgs, options, desktop, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
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"
|
||||||
|
) {};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
nix-gaming.nixosModules.platformOptimizations
|
||||||
|
nix-gaming.nixosModules.pipewireLowLatency
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
|
||||||
|
cudaSupport = (device == "desktop");
|
||||||
|
nvidia.acceptLicense = (device == "desktop");
|
||||||
|
};
|
||||||
|
|
||||||
|
overlays = [
|
||||||
|
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
BROWSER = "firefox";
|
||||||
|
NIXPKGS_ALLOW_UNFREE = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
geary
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.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 [
|
||||||
|
bambu-studio
|
||||||
|
]);
|
||||||
|
|
||||||
|
services = {
|
||||||
|
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"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
ollama = {
|
||||||
|
enable = false;
|
||||||
|
|
||||||
|
loadModels = [ "llama3.2:3b" "deepseek-r1:1.5b" "deepseek-r1:8b"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
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" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
appimage = {
|
||||||
|
enable = true;
|
||||||
|
binfmt = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
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
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
12
new/modules/security.nix
Normal file
12
new/modules/security.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
security = {
|
||||||
|
polkit.enable = true;
|
||||||
|
|
||||||
|
sudo = {
|
||||||
|
enable = true;
|
||||||
|
wheelNeedsPassword = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
17
new/modules/swap.nix
Normal file
17
new/modules/swap.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
boot.kernel.sysctl = {
|
||||||
|
"fs.file-max" = 524288;
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [{
|
||||||
|
device = "/var/lib/swapfile";
|
||||||
|
size = 8 * 1024;
|
||||||
|
}];
|
||||||
|
|
||||||
|
zramSwap = {
|
||||||
|
enable = true;
|
||||||
|
memoryMax = 64 * 1024 * 1024 * 1024;
|
||||||
|
};
|
||||||
|
}
|
||||||
19
new/modules/users.nix
Normal file
19
new/modules/users.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
users.users = {
|
||||||
|
bug = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "bug";
|
||||||
|
extraGroups = [ "networkmanager" "wheel" "audio" "video" "libvirtd" "ydotool" "dialout" ];
|
||||||
|
};
|
||||||
|
} // (if (device == "server") then {
|
||||||
|
levi = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "levi";
|
||||||
|
extraGroups = [ "wheel"];
|
||||||
|
|
||||||
|
hashedPassword = "$6$AqsDy7oxFOpjKZLM$kD0y3sc1b9xPTveqThhv2EyyhDh0WELrznYwCOQmZzVqEVWs6iG8PmLMstWSfpdloljciEW09u8vTRi1h0EBw1";
|
||||||
|
};
|
||||||
|
} else {});
|
||||||
|
}
|
||||||
9
new/modules/virtualisation.nix
Normal file
9
new/modules/virtualisation.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
virtualisation = {
|
||||||
|
libvirtd.enable = true;
|
||||||
|
|
||||||
|
spiceUSBRedirection.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
7
new/modules/vscode-server.nix
Normal file
7
new/modules/vscode-server.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, device, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
vscode-server.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user