Compare commits
8 Commits
fa5d2bcc76
...
f68a48e38b
Author | SHA1 | Date | |
---|---|---|---|
|
f68a48e38b | ||
|
f2875d76e0 | ||
|
925502ccc4 | ||
|
d76b08a80d | ||
|
b7c465073e | ||
|
63a5b3f384 | ||
|
5d881826d1 | ||
|
23e5723ccb |
62
flake.nix
62
flake.nix
@ -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" ];
|
||||||
};
|
};
|
||||||
|
@ -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);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
{ pkgs, stdenv, home-manager, mkHomeRole, ... }:
|
{ pkgs
|
||||||
|
, stdenv
|
||||||
|
, home-manager
|
||||||
|
, mkHomeRole
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
mkUser = { name, roles ? [ ] }:
|
mkUser = { name, roles ? [ ] }:
|
||||||
|
Loading…
Reference in New Issue
Block a user