Compare commits

...

8 Commits

Author SHA1 Message Date
Giulio De Pasquale
f68a48e38b flake: use nixpkgs master for unstable 2024-03-12 18:43:48 +00:00
Giulio De Pasquale
f2875d76e0 flake: removed galuminum config 2024-03-12 18:43:21 +00:00
Giulio De Pasquale
925502ccc4 flake: added cudaSupport for config. Enable cuda on Architect 2024-03-12 18:43:00 +00:00
Giulio De Pasquale
d76b08a80d flake: simplify passing of config, remove wrapUnstablePkgs 2024-03-12 18:41:03 +00:00
Giulio De Pasquale
b7c465073e host: remove unstablePkgs dependency 2024-03-12 18:37:52 +00:00
Giulio De Pasquale
63a5b3f384 lib: formatting 2024-03-12 18:28:24 +00:00
Giulio De Pasquale
5d881826d1 sunshine: something something 2024-03-12 17:34:58 +00:00
Giulio De Pasquale
23e5723ccb sunshine: disable vsync at start 2024-02-26 16:05:09 +00:00
4 changed files with 67 additions and 63 deletions

View File

@ -1,7 +1,7 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/release-23.11"; nixpkgs.url = "github:NixOS/nixpkgs/release-23.11";
nixos-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixos-unstable.url = "github:NixOS/nixpkgs/master";
local-unstable.url = "path:///home/giulio/dev/nixpkgs"; local-unstable.url = "path:///home/giulio/dev/nixpkgs";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-23.11"; url = "github:nix-community/home-manager/release-23.11";
@ -15,34 +15,31 @@
sysDarwin = "aarch64-darwin"; sysDarwin = "aarch64-darwin";
sysLinuxAarch = "aarch64-linux"; sysLinuxAarch = "aarch64-linux";
wrapPkgsSystem = { system }: wrapPkgsSystem = { system, cudaSupport ? false }:
import nixpkgs rec { let
inherit system;
unstablePkgs = wrapUnstablePkgsSystem { inherit system; };
localPkgs = import local-unstable {
inherit system;
config.allowUnfree = true;
};
config = { config = {
inherit cudaSupport;
allowUnfree = true; allowUnfree = true;
}; };
in
import nixpkgs rec {
inherit system config;
unstablePkgs = import nixos-unstable {
inherit system config;
};
localPkgs = import local-unstable {
inherit system config;
};
overlays = [ overlays = [
(final: prev: { inherit unstablePkgs; }) (final: prev: { inherit unstablePkgs; })
(final: prev: { inherit localPkgs; }) (final: prev: { inherit localPkgs; })
]; ];
}; };
wrapUnstablePkgsSystem = { system }: wrapUtils = { pkgs, system }:
import nixos-unstable {
inherit system;
config = {
allowUnfree = true;
};
};
wrapUtils = { pkgs, unstablePkgs, system }:
let let
inherit (pkgs.lib) makeScope; inherit (pkgs.lib) makeScope;
inherit (pkgs) newScope; inherit (pkgs) newScope;
@ -57,35 +54,24 @@
}); });
pkgsLinuxX64 = wrapPkgsSystem { system = sysLinuxX64; }; pkgsLinuxX64Cuda = wrapPkgsSystem { system = sysLinuxX64; cudaSupport = true; };
unstableLinuxX64 = wrapUnstablePkgsSystem { system = sysLinuxX64; }; utilsLinuxX64Cuda = wrapUtils { system = sysLinuxX64; pkgs = pkgsLinuxX64Cuda; };
utilsLinuxX64 = wrapUtils { system = sysLinuxX64; pkgs = pkgsLinuxX64; unstablePkgs = unstableLinuxX64; };
pkgsLinuxAarch = wrapPkgsSystem { system = sysLinuxAarch; }; pkgsLinuxAarch = wrapPkgsSystem { system = sysLinuxAarch; };
unstableLinuxAarch = wrapUnstablePkgsSystem { system = sysLinuxAarch; }; utilsLinuxAarch = wrapUtils { system = sysLinuxAarch; pkgs = pkgsLinuxAarch; };
utilsLinuxAarch = wrapUtils { system = sysLinuxAarch; pkgs = pkgsLinuxAarch; unstablePkgs = unstableLinuxAarch; };
pkgsDarwin = wrapPkgsSystem { system = sysDarwin; }; pkgsDarwin = wrapPkgsSystem { system = sysDarwin; };
unstableDarwin = wrapUnstablePkgsSystem { system = sysDarwin; }; utilsDarwin = wrapUtils { system = sysDarwin; pkgs = pkgsDarwin; };
utilsDarwin = wrapUtils { system = sysDarwin; pkgs = pkgsDarwin; unstablePkgs = unstableDarwin; };
in in
{ {
nixosConfigurations = { nixosConfigurations = {
architect = utilsLinuxX64.host.mkHost { architect = utilsLinuxX64Cuda.host.mkHost {
name = "architect"; name = "architect";
users = [{ users = [{
user = "giulio"; user = "giulio";
roles = [ ]; roles = [ ];
}]; }];
}; };
gAluminum = utilsLinuxX64.host.mkHost {
name = "gAluminum";
users = [{
user = "giulio";
roles = [ "desktop" "ssh" "git" ];
}];
roles = [ "gnome" ];
};
}; };
homeConfigurations = { homeConfigurations = {
@ -97,11 +83,11 @@
name = "giulio"; name = "giulio";
roles = [ "ssh" ]; roles = [ "ssh" ];
}; };
giulioX64 = utilsLinuxX64.user.mkHMUser { giulioX64 = utilsLinuxX64Cuda.user.mkHMUser {
name = "giulio"; name = "giulio";
roles = [ "ssh" "go" ]; roles = [ "ssh" "go" ];
}; };
giulioX64NoSSH = utilsLinuxX64.user.mkHMUser { giulioX64NoSSH = utilsLinuxX64Cuda.user.mkHMUser {
name = "giulio"; name = "giulio";
roles = [ "go" ]; roles = [ "go" ];
}; };

View File

@ -1,6 +1,16 @@
{ pkgs, ... }: { config, pkgs, ... }:
let let
# nvidia-patch
rev = "b63013c"; # revision from https://github.com/keylase/nvidia-patch to use
hash = "sha256-EDPoMTj3J1f/7Sv/q7P/lZ4r2aXOCdsbZ4FumbvuCWk="; # sha256sum for https://github.com/keylase/nvidia-patch at the specified revision
# create patch functions for the specified revision
nvidia-patch = pkgs.nvidia-patch rev hash;
# nvidia package to patch
nvidiaPackage = config.boot.kernelPackages.nvidiaPackages.stable;
user = "sunshine"; user = "sunshine";
resolutionScript = pkgs.writeTextFile { resolutionScript = pkgs.writeTextFile {
name = "sunshine-resolution-script"; name = "sunshine-resolution-script";
@ -23,6 +33,8 @@ let
# Apply new xrandr mode # Apply new xrandr mode
xrandr --output DP-0 --primary --mode ''${mode_alias} --pos 0x0 --rotate normal xrandr --output DP-0 --primary --mode ''${mode_alias} --pos 0x0 --rotate normal
/run/current-system/sw/bin/nvidia-settings -a 'SyncToVBlank=0'
''; '';
executable = true; executable = true;
destination = "/bin/resolution.sh"; destination = "/bin/resolution.sh";
@ -35,7 +47,7 @@ let
min_threads=12 min_threads=12
global_prep_cmd=[{"do":"${pkgs.bash}/bin/bash -c \"${resolutionScript}/bin/resolution.sh ''${SUNSHINE_CLIENT_WIDTH} ''${SUNSHINE_CLIENT_HEIGHT} ''${SUNSHINE_CLIENT_FPS}\""}] global_prep_cmd=[{"do":"${pkgs.bash}/bin/bash -c \"${resolutionScript}/bin/resolution.sh ''${SUNSHINE_CLIENT_WIDTH} ''${SUNSHINE_CLIENT_HEIGHT} ''${SUNSHINE_CLIENT_FPS}\""}]
''; '';
sunshineOverride = pkgs.sunshine.override { cudaSupport = true; stdenv = pkgs.cudaPackages.backendStdenv; }; sunshineOverride = pkgs.unstablePkgs.sunshine.override { cudaSupport = true; };
in in
{ {
security = { security = {
@ -52,18 +64,13 @@ in
''; '';
}; };
systemd.targets = {
sleep.enable = false;
suspend.enable = false;
hibernate.enable = false;
hybrid-sleep.enable = false;
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
sunshineOverride sunshineOverride
xorg.xrandr xorg.xrandr
xorg.xorgserver xorg.xorgserver
xorg.libxcvt xorg.libxcvt
gamemode
]; ];
sound.enable = true; sound.enable = true;
@ -130,20 +137,28 @@ in
openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1we38/N+t8Ah5yrLof8QUwhrob7/VXFKIddaJeOVBLuDVnW7ljiAtdtEiL69D/DV4Ohmt5wMvkAAjfuHmim6FD9A6lzPbSU4KH9W2dcckszKbbI636kuDwem/xui6BW3wJa6P+0xW5ksygEAkzcK2PXuC2b4B9uwhuUdKahiGMKDxISG/WianqAe72cGMfNkYvion3Y1VsMLUdm48d2ABnxNpr7NI9B5iJ8dziOft9gpgfz13CCQRlReo75gk/4xI+vSNrQp7eR+wzJy2/dZg/T8jtyA9Q6jVxrxBpqQ1LNXkAKaJkGo9OabF6Wgpzp+YTAurL4nwR2NaJxwFuyoKvACQy0ai4jrS3206gC6JXZv8ktZMZrwUN+jPqCwfgh5qObFkAqKCxbp52ioDek2MQLdOvzQBX//DBhGEp5rzHGLZ3vhRIiiQiaof5sF5zWiYDW5mqezSPNxJPX/BrTP/Wbs/jpwTLBh3wytiia0S1WXQmya89bqzTPFiDWvTRA62EVKB/JaQtPQQOFAxWwg799DMycPeZ81xttZOyMtI/MZSddyqx2S8fWGwvToZQvuZ38mSIpFseLM1IkgabRIrAmat5SBNGGy9Dqa0eMEa7bwIY/4CMB1y6HMTnaoMXA6cnQfHMoB/zyTZ6oTXIeqeOyiZsK+RN0Mvahj8mXi7dw== giulio@giulio-X230" ]; openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1we38/N+t8Ah5yrLof8QUwhrob7/VXFKIddaJeOVBLuDVnW7ljiAtdtEiL69D/DV4Ohmt5wMvkAAjfuHmim6FD9A6lzPbSU4KH9W2dcckszKbbI636kuDwem/xui6BW3wJa6P+0xW5ksygEAkzcK2PXuC2b4B9uwhuUdKahiGMKDxISG/WianqAe72cGMfNkYvion3Y1VsMLUdm48d2ABnxNpr7NI9B5iJ8dziOft9gpgfz13CCQRlReo75gk/4xI+vSNrQp7eR+wzJy2/dZg/T8jtyA9Q6jVxrxBpqQ1LNXkAKaJkGo9OabF6Wgpzp+YTAurL4nwR2NaJxwFuyoKvACQy0ai4jrS3206gC6JXZv8ktZMZrwUN+jPqCwfgh5qObFkAqKCxbp52ioDek2MQLdOvzQBX//DBhGEp5rzHGLZ3vhRIiiQiaof5sF5zWiYDW5mqezSPNxJPX/BrTP/Wbs/jpwTLBh3wytiia0S1WXQmya89bqzTPFiDWvTRA62EVKB/JaQtPQQOFAxWwg799DMycPeZ81xttZOyMtI/MZSddyqx2S8fWGwvToZQvuZ38mSIpFseLM1IkgabRIrAmat5SBNGGy9Dqa0eMEa7bwIY/4CMB1y6HMTnaoMXA6cnQfHMoB/zyTZ6oTXIeqeOyiZsK+RN0Mvahj8mXi7dw== giulio@giulio-X230" ];
}; };
systemd = {
targets = {
sleep.enable = false;
suspend.enable = false;
hibernate.enable = false;
hybrid-sleep.enable = false;
};
systemd.user.services.${user} = { user.services.${user} = {
description = "Sunshine server"; description = "Sunshine server";
wantedBy = [ "graphical-session.target" ]; wantedBy = [ "graphical-session.target" ];
startLimitIntervalSec = 500; startLimitIntervalSec = 500;
startLimitBurst = 5; startLimitBurst = 5;
partOf = [ "graphical-session.target" ]; partOf = [ "graphical-session.target" ];
wants = [ "graphical-session.target" ]; wants = [ "graphical-session.target" ];
after = [ "graphical-session.target" ]; after = [ "graphical-session.target" ];
path = [ resolutionScript pkgs.xorg.xrandr pkgs.bash pkgs.xorg.libxcvt pkgs.xorg.xorgserver pkgs.gawk ]; path = with pkgs; [ resolutionScript xorg.xrandr bash xorg.libxcvt xorg.xorgserver gawk gamemode ];
serviceConfig = { serviceConfig = {
ExecStart = "${sunshineOverride}/bin/sunshine ${configFile}"; ExecStart = "${sunshineOverride}/bin/sunshine ${configFile}";
Restart = "on-failure"; Restart = "on-failure";
RestartSec = "5s"; RestartSec = "5s";
};
}; };
}; };
@ -166,6 +181,7 @@ in
powerManagement.finegrained = false; powerManagement.finegrained = false;
open = false; open = false;
nvidiaSettings = true; nvidiaSettings = true;
package = nvidia-patch.patch-nvenc (nvidia-patch.patch-fbc nvidiaPackage);
}; };
}; };

View File

@ -1,9 +1,7 @@
{ pkgs { pkgs
, nixpkgs , nixpkgs
, unstablePkgs
, home-manager , home-manager
, system , system
, mkHomeRole
, mkSysRole , mkSysRole
, mkUser , mkUser
, ... , ...
@ -36,7 +34,6 @@
]; ];
home-manager = { home-manager = {
extraSpecialArgs.unstablePkgs = unstablePkgs;
useGlobalPkgs = true; useGlobalPkgs = true;
}; };

View File

@ -1,4 +1,9 @@
{ pkgs, stdenv, home-manager, mkHomeRole, ... }: { pkgs
, stdenv
, home-manager
, mkHomeRole
, ...
}:
{ {
mkUser = { name, roles ? [ ] }: mkUser = { name, roles ? [ ] }: