Compare commits
6 Commits
be941d0806
...
21e825b2d1
| Author | SHA1 | Date | |
|---|---|---|---|
| 21e825b2d1 | |||
| 488fbf47fb | |||
| 9da0f55452 | |||
| f7b3973bd5 | |||
| bd578edae6 | |||
| db3de54479 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
./hostname
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{ lib, pkgs, localPackages, ... }: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
pulseaudio
|
|
||||||
pavucontrol
|
|
||||||
feishin
|
|
||||||
easyeffects
|
|
||||||
helvum
|
|
||||||
];
|
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,11 +1,13 @@
|
|||||||
{ lib, pkgs, localPackages, ... }: {
|
{ lib, pkgs, localPackages, ... }: {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; with localPackages.x86_64-linux; [
|
||||||
protonup-qt
|
protonup-qt
|
||||||
vesktop
|
vesktop
|
||||||
|
lutris
|
||||||
|
gamescope-old
|
||||||
|
wine
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
gamescopeSession.enable = true;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,18 @@
|
|||||||
wayland-pipewire-idle-inhibit
|
wayland-pipewire-idle-inhibit
|
||||||
firefox
|
firefox
|
||||||
mpv
|
mpv
|
||||||
|
cinny-desktop
|
||||||
|
thunderbird
|
||||||
|
protonmail-bridge
|
||||||
|
libsecret
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.sway.enable = true;
|
programs.sway.enable = true;
|
||||||
programs.thunar.enable = true;
|
programs.thunar.enable = true;
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
services.dbus.packages = [ pkgs.gnome.seahorse ];
|
||||||
|
|
||||||
xdg.portal.wlr.enable = true;
|
xdg.portal.wlr.enable = true;
|
||||||
|
|
||||||
|
|||||||
12
flake.lock
generated
12
flake.lock
generated
@@ -7,11 +7,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716930911,
|
"lastModified": 1717316182,
|
||||||
"narHash": "sha256-t4HT5j3Jy7skRB5PINnxcEBCkgE89rGBpwTI7YS4Ffo=",
|
"narHash": "sha256-Xi0EpZcu39N0eW7apLjFfUOR9y80toyjYizez7J1wMI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "a9b36cbe9292a649222b89fdb9ae9907e9c74086",
|
"rev": "9b53a10f4c91892f5af87cf55d08fba59ca086af",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -22,11 +22,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716509168,
|
"lastModified": 1716948383,
|
||||||
"narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=",
|
"narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "bfb7a882678e518398ce9a31a881538679f6f092",
|
"rev": "ad57eef4ef0659193044870c731987a6df5cf56b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
119
flake.nix
119
flake.nix
@@ -9,51 +9,100 @@
|
|||||||
|
|
||||||
outputs = inputs@{ self, nixpkgs, home-manager, ... }: let
|
outputs = inputs@{ self, nixpkgs, home-manager, ... }: let
|
||||||
inherit (self) outputs;
|
inherit (self) outputs;
|
||||||
in {
|
|
||||||
|
hostname =
|
||||||
|
if (builtins.pathExists ./hostname) then
|
||||||
|
builtins.readFile(./hostname)
|
||||||
|
else
|
||||||
|
"default-hostname";
|
||||||
|
|
||||||
|
configs."ankaa" = {
|
||||||
|
openssh = {
|
||||||
|
enable = true;
|
||||||
|
port = 2222;
|
||||||
|
};
|
||||||
|
|
||||||
|
backup = {
|
||||||
|
enable = true;
|
||||||
|
user = "eesim";
|
||||||
|
paths = [ "/home/eesim" ];
|
||||||
|
repo = "rf030789@rf030789.repo.borgbase.com:repo";
|
||||||
|
excludes = [
|
||||||
|
"/home/eesim/.local/share/Steam/steamapps/common"
|
||||||
|
"/home/eesim/.cache"
|
||||||
|
];
|
||||||
|
passphrase = "/home/eesim/.ssh/borgbase_passphrase";
|
||||||
|
key = "/home/eesim/.ssh/id_ed25519_borgbase";
|
||||||
|
repeat = "daily";
|
||||||
|
};
|
||||||
|
|
||||||
|
audio = {
|
||||||
|
pipewire.enable = true;
|
||||||
|
music.enable = true;
|
||||||
|
tools = {
|
||||||
|
helvum = true;
|
||||||
|
easyeffects = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
gui = {
|
||||||
|
enable = true;
|
||||||
|
protonmail = true;
|
||||||
|
matrix = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
games.enable = true;
|
||||||
|
|
||||||
|
common.nil.enable = true;
|
||||||
|
|
||||||
|
networking.wireguard.enable = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
configs."alpheratz" = {
|
||||||
|
audio = {
|
||||||
|
pipewire.enable = true;
|
||||||
|
music.enable = true;
|
||||||
|
|
||||||
|
gui = {
|
||||||
|
enable = true;
|
||||||
|
protonmail = true;
|
||||||
|
matrix = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
common.nil.enable = true;
|
||||||
|
|
||||||
|
networking.wireguard.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
configs."default-hostname" = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
in {
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
ankaa = nixpkgs.lib.nixosSystem {
|
"${hostname}" = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit (outputs) localPackages;
|
inherit (outputs) localPackages;
|
||||||
openssh-port = 2222;
|
|
||||||
};
|
};
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/ankaa/configuration.nix
|
{
|
||||||
./hosts/ankaa/hardware-configuration.nix
|
networking.hostName = hostname;
|
||||||
./features/audio.nix
|
}
|
||||||
./features/common.nix
|
(import ./modules/nix)
|
||||||
./features/gui.nix
|
{
|
||||||
./features/networking.nix
|
simmer = configs."${hostname}";
|
||||||
./features/gaming.nix
|
}
|
||||||
./modules/backups/home-ankaa.nix
|
(./. + "/hosts/${hostname}/system.nix")
|
||||||
./modules/openssh.nix
|
(./. + "/hosts/${hostname}/hardware-configuration.nix")
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
|
|
||||||
home-manager.users.eesim = import ./hosts/ankaa/home.nix;
|
home-manager.users.eesim = import (./. + "/hosts/${hostname}/home.nix");
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
alpheratz = nixpkgs.lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
specialArgs = {
|
|
||||||
inherit (outputs) localPackages;
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
./hosts/alpheratz/configuration.nix
|
|
||||||
./hosts/alpheratz/hardware-configuration.nix
|
|
||||||
./features/common.nix
|
|
||||||
./features/gui.nix
|
|
||||||
./features/audio.nix
|
|
||||||
./features/networking.nix
|
|
||||||
./features/laptop.nix
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.users.eesim = import ./hosts/alpheratz/home.nix;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -64,6 +113,8 @@
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
kickoff-dot-desktop = pkgs.callPackage ./pkgs/kickoff-dot-desktop.nix { };
|
kickoff-dot-desktop = pkgs.callPackage ./pkgs/kickoff-dot-desktop.nix { };
|
||||||
|
gamescope-old = pkgs.callPackage ./pkgs/gamescope-old {};
|
||||||
|
gamescope-dbg = pkgs.callPackage ./pkgs/gamescope-dbg {};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,7 +5,9 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [];
|
imports = [
|
||||||
|
../../modules/home
|
||||||
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
username = "eesim";
|
username = "eesim";
|
||||||
@@ -17,42 +19,7 @@
|
|||||||
home.file.".config/waybar".source = ./dotfiles/waybar;
|
home.file.".config/waybar".source = ./dotfiles/waybar;
|
||||||
home.file.".config/fish/config.fish".source = ./dotfiles/fish/config.fish;
|
home.file.".config/fish/config.fish".source = ./dotfiles/fish/config.fish;
|
||||||
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "Ethan Simmons";
|
|
||||||
userEmail = "eesimmons9105@gmail.com";
|
|
||||||
extraConfig = {
|
|
||||||
core.sshCommand = "'ssh -i /home/eesim/.ssh/id_ed25519'";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
cursorTheme = {
|
|
||||||
name = "phinger-cursors-dark";
|
|
||||||
package = pkgs.phinger-cursors;
|
|
||||||
};
|
|
||||||
theme = {
|
|
||||||
name = "adw-gtk3-dark";
|
|
||||||
package = pkgs.adw-gtk3;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
style = {
|
|
||||||
name = "adwaita-dark";
|
|
||||||
package = pkgs.adwaita-qt;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
home.stateVersion = "23.11";
|
home.stateVersion = "23.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,13 +36,6 @@
|
|||||||
"/nix".options = [ "compress=zstd" "noatime" ];
|
"/nix".options = [ "compress=zstd" "noatime" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.hostName = "alpheratz";
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
networking.nameservers = [ "192.168.0.100" ];
|
|
||||||
|
|
||||||
networking.firewall = {
|
|
||||||
allowedUDPPorts = [ 51820 ];
|
|
||||||
};
|
|
||||||
networking.wg-quick.interfaces = {
|
networking.wg-quick.interfaces = {
|
||||||
wg0 = {
|
wg0 = {
|
||||||
address = [ "10.6.0.5" ];
|
address = [ "10.6.0.5" ];
|
||||||
@@ -55,7 +48,7 @@
|
|||||||
publicKey = "pEWHugUnnhWXkJzCIhXryRRZMoCAuvAITDeP4ItenQk=";
|
publicKey = "pEWHugUnnhWXkJzCIhXryRRZMoCAuvAITDeP4ItenQk=";
|
||||||
presharedKeyFile = "/root/wireguard-keys/wg0/preshared";
|
presharedKeyFile = "/root/wireguard-keys/wg0/preshared";
|
||||||
allowedIPs = [ "10.2.0.0/24" "192.168.0.0/24" ];
|
allowedIPs = [ "10.2.0.0/24" "192.168.0.0/24" ];
|
||||||
endpoint = "jellyfin.simmer505.com:51820";
|
endpoint = "simmer505.com:51820";
|
||||||
persistentKeepalive = 25;
|
persistentKeepalive = 25;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -280,7 +280,7 @@ exec --no-startup-id ydotoold
|
|||||||
exec --no-startup-id easyeffects --gapplication-service
|
exec --no-startup-id easyeffects --gapplication-service
|
||||||
exec --no-startup-id wayland-pipewire-idle-inhibit
|
exec --no-startup-id wayland-pipewire-idle-inhibit
|
||||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
exec --no-startup-id protonmail-bridge
|
exec --no-startup-id protonmail-bridge --noninteractive
|
||||||
exec --no-startup-id swayidle -w \
|
exec --no-startup-id swayidle -w \
|
||||||
timeout 600 'swaymsg "output * dpms off"' \
|
timeout 600 'swaymsg "output * dpms off"' \
|
||||||
resume 'swaymsg "output * dpms on"'
|
resume 'swaymsg "output * dpms on"'
|
||||||
|
|||||||
@@ -3,9 +3,12 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [];
|
imports = [
|
||||||
|
../../modules/home
|
||||||
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
username = "eesim";
|
username = "eesim";
|
||||||
@@ -22,39 +25,7 @@
|
|||||||
# Fix for slow steam download speeds https://old.reddit.com/r/linux_gaming/comments/16e1l4h/slow_steam_downloads_try_this/
|
# Fix for slow steam download speeds https://old.reddit.com/r/linux_gaming/comments/16e1l4h/slow_steam_downloads_try_this/
|
||||||
home.file.".steam/steam/steam_dev.cfg".source = ./dotfiles/steam/steam_dev.cfg;
|
home.file.".steam/steam/steam_dev.cfg".source = ./dotfiles/steam/steam_dev.cfg;
|
||||||
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "Ethan Simmons";
|
|
||||||
userEmail = "eesimmons9105@gmail.com";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
cursorTheme = {
|
|
||||||
name = "phinger-cursors-dark";
|
|
||||||
package = pkgs.phinger-cursors;
|
|
||||||
};
|
|
||||||
theme = {
|
|
||||||
name = "adw-gtk3-dark";
|
|
||||||
package = pkgs.adw-gtk3;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
style = {
|
|
||||||
name = "adwaita-dark";
|
|
||||||
package = pkgs.adwaita-qt;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
home.stateVersion = "23.11";
|
home.stateVersion = "23.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,10 +33,6 @@
|
|||||||
"/nix".options = [ "compress=zstd" "noatime" ];
|
"/nix".options = [ "compress=zstd" "noatime" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.hostName = "ankaa";
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
networking.nameservers = [ "192.168.0.100" ];
|
|
||||||
|
|
||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
time.timeZone = "America/Chicago";
|
time.timeZone = "America/Chicago";
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{ pkgs, lib, ... }: {
|
|
||||||
services.borgbackup.jobs = {
|
|
||||||
home-ankaa =
|
|
||||||
let
|
|
||||||
user = "eesim";
|
|
||||||
home = "/home/${user}";
|
|
||||||
excludes = [ ".local/share/Steam/steamapps/common" ".cache" ];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit user;
|
|
||||||
paths = [ home ];
|
|
||||||
exclude = builtins.map (e: "${home}/${e}") excludes;
|
|
||||||
repo = "rf030789@rf030789.repo.borgbase.com:repo";
|
|
||||||
encryption = {
|
|
||||||
mode = "repokey-blake2";
|
|
||||||
passCommand = "cat ${home}/.ssh/borgbase_passphrase";
|
|
||||||
};
|
|
||||||
environment.BORG_RSH = "ssh -i ${home}/.ssh/id_ed25519_borgbase";
|
|
||||||
compression = "auto,lzma";
|
|
||||||
startAt = "daily";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
14
modules/home/default.nix
Normal file
14
modules/home/default.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./git.nix
|
||||||
|
./direnv.nix
|
||||||
|
./git.nix
|
||||||
|
./qt.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
26
modules/home/direnv.nix
Normal file
26
modules/home/direnv.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.direnv;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.simmer.direnv = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to install and configure direnv";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
26
modules/home/git.nix
Normal file
26
modules/home/git.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.git;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.simmer.git = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to install and configure git";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Ethan Simmons";
|
||||||
|
userEmail = "eesimmons9105@gmail.com";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
37
modules/home/gtk.nix
Normal file
37
modules/home/gtk.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.gtk;
|
||||||
|
gui = config.simmer.gui;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.simmer.gtk = {
|
||||||
|
theme.enable = mkOption {
|
||||||
|
description = "Whether to enable gtk themes";
|
||||||
|
type = types.bool;
|
||||||
|
default = gui.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
gtk = mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
cursorTheme = {
|
||||||
|
name = "phinger-cursors-dark";
|
||||||
|
package = pkgs.phinger-cursors;
|
||||||
|
};
|
||||||
|
iconTheme = {
|
||||||
|
name = "awaida-dark";
|
||||||
|
package = pkgs.gnome.adwaita-icon-theme;
|
||||||
|
};
|
||||||
|
theme = {
|
||||||
|
name = "adw-gtk3-dark";
|
||||||
|
package = pkgs.adw-gtk3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
26
modules/home/qt.nix
Normal file
26
modules/home/qt.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.qt;
|
||||||
|
gui = config.simmer.gui;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.simmer.qt = {
|
||||||
|
theme.enable = mkOption {
|
||||||
|
description = "Whether to enable qt themes";
|
||||||
|
type = types.bool;
|
||||||
|
default = gui.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
qt.style = mkIf cfg.theme.enable {
|
||||||
|
name = "adwaita-dark";
|
||||||
|
package = pkgs.adwaita-qt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
78
modules/nix/audio.nix
Normal file
78
modules/nix/audio.nix
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.audio;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.simmer.audio = {
|
||||||
|
pipewire = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Enable pipewire";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
pulseSupport = mkOption {
|
||||||
|
description = "Enable pulse support for pipewire";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
alsaSupport = mkOption {
|
||||||
|
description = "Enable alsa support for pipewire";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
music = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Install music player";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
tools = {
|
||||||
|
helvum = mkOption {
|
||||||
|
description = "Install helvum";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
easyeffects = mkOption {
|
||||||
|
description = "Install easyeffects";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
pavucontrol = mkOption {
|
||||||
|
description = "Install pavucontrol";
|
||||||
|
type = types.bool;
|
||||||
|
default = cfg.pipewire.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
environment.systemPackages =
|
||||||
|
with pkgs; []
|
||||||
|
++ optional cfg.tools.helvum helvum
|
||||||
|
++ optional cfg.tools.easyeffects easyeffects
|
||||||
|
++ optional cfg.tools.pavucontrol pavucontrol
|
||||||
|
++ optional cfg.pipewire.pulseSupport pulseaudio
|
||||||
|
++ optional cfg.music.enable feishin;
|
||||||
|
|
||||||
|
|
||||||
|
security.rtkit.enable = mkIf cfg.pipewire.enable true;
|
||||||
|
services.pipewire = mkIf cfg.pipewire.enable {
|
||||||
|
enable = true;
|
||||||
|
alsa = mkIf cfg.pipewire.alsaSupport {
|
||||||
|
enable = true;
|
||||||
|
support32Bit = true;
|
||||||
|
};
|
||||||
|
pulse.enable = mkIf cfg.pipewire.pulseSupport true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
74
modules/nix/backup.nix
Normal file
74
modules/nix/backup.nix
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
{ pkgs
|
||||||
|
, lib
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.backup;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.simmer.backup = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether backups should be enabled";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
repo = mkOption {
|
||||||
|
description = "Which repository to backup to";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
paths = mkOption {
|
||||||
|
description = "Which paths to backup";
|
||||||
|
type = types.listOf types.str;
|
||||||
|
};
|
||||||
|
|
||||||
|
user = mkOption {
|
||||||
|
description = "Which user to run backup commands with";
|
||||||
|
type = types.str;
|
||||||
|
default = "root";
|
||||||
|
};
|
||||||
|
|
||||||
|
excludes = mkOption {
|
||||||
|
description = "Which directories to exclude";
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
passphrase = mkOption {
|
||||||
|
description = "path to file containing passphrase";
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
key = mkOption {
|
||||||
|
description = "Path to file containing SSH Key";
|
||||||
|
type = types.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
repeat = mkOption {
|
||||||
|
description = "How often to run the backup (hourly, daily, weekly)";
|
||||||
|
type = types.enum [ "hourly" "daily" "weekly" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.borgbackup.jobs = {
|
||||||
|
backup = {
|
||||||
|
user = cfg.user;
|
||||||
|
paths = cfg.paths;
|
||||||
|
exclude = cfg.excludes;
|
||||||
|
repo = cfg.repo;
|
||||||
|
encryption = {
|
||||||
|
mode = "repokey-blake2";
|
||||||
|
passCommand = "cat ${cfg.passphrase}";
|
||||||
|
};
|
||||||
|
environment.BORG_RSH = "ssh -i ${cfg.key}";
|
||||||
|
compression = "auto,lzma";
|
||||||
|
startAt = cfg.repeat;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
58
modules/nix/common.nix
Normal file
58
modules/nix/common.nix
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, localPackages
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.common;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.simmer.common = {
|
||||||
|
neovim.enable = mkOption {
|
||||||
|
description = "Whether to install neovim and set as default editor";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nil.enable = mkOption {
|
||||||
|
description = "Whether to install nil";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
shell = mkOption {
|
||||||
|
description = "Default shell to use (fish)";
|
||||||
|
type = types.enum [ "fish" ];
|
||||||
|
default = "fish";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
config = {
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
curl
|
||||||
|
wget
|
||||||
|
git
|
||||||
|
killall
|
||||||
|
vim
|
||||||
|
eza
|
||||||
|
ripgrep
|
||||||
|
fzf
|
||||||
|
ncdu
|
||||||
|
btop
|
||||||
|
]
|
||||||
|
++ optional cfg.nil.enable nil;
|
||||||
|
|
||||||
|
programs.neovim = mkIf cfg.neovim.enable {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fish.enable = mkIf (cfg.shell == "fish") true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
17
modules/nix/default.nix
Normal file
17
modules/nix/default.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./openssh.nix
|
||||||
|
./backup.nix
|
||||||
|
./audio.nix
|
||||||
|
./gui.nix
|
||||||
|
./common.nix
|
||||||
|
./networking.nix
|
||||||
|
./games.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
61
modules/nix/games.nix
Normal file
61
modules/nix/games.nix
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, localPackages
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.games;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.simmer.games = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to enable games";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
protonup.enable = mkOption {
|
||||||
|
description = "Whether to install protonup";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
lutris.enable = mkOption {
|
||||||
|
description = "Whether to install lutris";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
steam.enable = mkOption {
|
||||||
|
description = "Whether to install steam";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gamescope.enable = mkOption {
|
||||||
|
description = "Whether to install gamescope";
|
||||||
|
type = types.bool;
|
||||||
|
default = cfg.steam.enable;
|
||||||
|
};
|
||||||
|
|
||||||
|
discord.enable = mkOption {
|
||||||
|
description = "Whether to install discord";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; with localPackages.x86_64-linux;
|
||||||
|
[]
|
||||||
|
++ optional cfg.protonup.enable protonup-qt
|
||||||
|
++ optional cfg.gamescope.enable gamescope-old
|
||||||
|
++ optional cfg.discord.enable vesktop
|
||||||
|
++ optionals cfg.lutris.enable [ lutris wine ];
|
||||||
|
|
||||||
|
programs.steam = mkIf cfg.steam.enable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
85
modules/nix/gui.nix
Normal file
85
modules/nix/gui.nix
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, localPackages
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.gui;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.simmer.gui = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Enable gui";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
wm = mkOption {
|
||||||
|
description = "Which window manager to install";
|
||||||
|
type = types.enum [ "sway" ];
|
||||||
|
default = "sway";
|
||||||
|
};
|
||||||
|
|
||||||
|
terminal = mkOption {
|
||||||
|
description = "Which terminal to install (alacritty)";
|
||||||
|
type = types.enum [ pkgs.alacritty ];
|
||||||
|
default = pkgs.alacritty;
|
||||||
|
};
|
||||||
|
|
||||||
|
protonmail = mkOption {
|
||||||
|
description = "Whether to install protonmail bridge and mail application";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
secrets = mkOption {
|
||||||
|
description = "Whether to enable secrets handling with gnomke-keyring";
|
||||||
|
type = types.bool;
|
||||||
|
default = cfg.protonmail;
|
||||||
|
};
|
||||||
|
|
||||||
|
matrix = mkOption {
|
||||||
|
description = "Whether to install a matrix client";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; with localPackages.x86_64-linux; []
|
||||||
|
++ optionals (cfg.wm == "sway") [
|
||||||
|
wl-clipboard
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
waybar
|
||||||
|
swaybg
|
||||||
|
kickoff
|
||||||
|
kickoff-dot-desktop
|
||||||
|
wayland-pipewire-idle-inhibit
|
||||||
|
firefox
|
||||||
|
mpv
|
||||||
|
]
|
||||||
|
++ [ cfg.terminal ]
|
||||||
|
++ optional cfg.matrix cinny-desktop
|
||||||
|
++ optional cfg.secrets libsecret
|
||||||
|
++ optionals cfg.protonmail [ thunderbird protonmail-bridge ];
|
||||||
|
|
||||||
|
programs.sway.enable = mkIf (cfg.wm == "sway") true;
|
||||||
|
|
||||||
|
programs.dconf.enable = mkIf cfg.secrets true;
|
||||||
|
services.gnome.gnome-keyring.enable = mkIf cfg.secrets true;
|
||||||
|
services.dbus.packages = mkIf cfg.secrets [ pkgs.gnome.seahorse ];
|
||||||
|
|
||||||
|
xdg.portal.wlr.enable = true;
|
||||||
|
programs.thunar.enable = true;
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
font-awesome
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
74
modules/nix/networking.nix
Normal file
74
modules/nix/networking.nix
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, localPackages
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.networking;
|
||||||
|
openssh = config.simmer.openssh;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
options.simmer.networking = {
|
||||||
|
firewall = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to enable firewall";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
allowedTCPPorts = mkOption {
|
||||||
|
description = "Which tcp ports to allow through firewall";
|
||||||
|
type = types.listOf types.int;
|
||||||
|
default = []
|
||||||
|
++ optional openssh.enable openssh.port;
|
||||||
|
};
|
||||||
|
|
||||||
|
allowedUDPPorts = mkOption {
|
||||||
|
description = "Which udp ports to allow through firewall";
|
||||||
|
type = types.listOf types.int;
|
||||||
|
default = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
wireguard = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to install wireguard";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networkmanager = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to enable network manager";
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nameservers = mkOption {
|
||||||
|
description = "Which nameservers to use";
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [ "1.1.1.1" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
ldns
|
||||||
|
]
|
||||||
|
++ optional cfg.wireguard.enable wireguard-tools;
|
||||||
|
|
||||||
|
networking.networkmanager.enable = cfg.networkmanager.enable;
|
||||||
|
networking.nameservers = cfg.nameservers;
|
||||||
|
networking.firewall = {
|
||||||
|
enable = cfg.firewall.enable;
|
||||||
|
allowedTCPPorts = cfg.firewall.allowedTCPPorts;
|
||||||
|
allowedUDPPorts = cfg.firewall.allowedUDPPorts;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
42
modules/nix/openssh.nix
Normal file
42
modules/nix/openssh.nix
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
with lib; let
|
||||||
|
cfg = config.simmer.openssh;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.simmer.openssh = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = "Whether to enable openssh server";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
description = "What port the server should run on";
|
||||||
|
type = types.int;
|
||||||
|
default = 22;
|
||||||
|
};
|
||||||
|
|
||||||
|
allow-password = mkOption {
|
||||||
|
description = "Whether the server should allow password authenitication" ;
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
ports = [ cfg.port ];
|
||||||
|
settings = {
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{ lib
|
|
||||||
, pkgs
|
|
||||||
, openssh-port ? 22
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
ports = [ openssh-port ];
|
|
||||||
settings = {
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
168
pkgs/gamescope-dbg/default.nix
Normal file
168
pkgs/gamescope-dbg/default.nix
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, libgcc
|
||||||
|
, meson
|
||||||
|
, pkg-config
|
||||||
|
, ninja
|
||||||
|
, xorg
|
||||||
|
, libdrm
|
||||||
|
, libei
|
||||||
|
, vulkan-loader
|
||||||
|
, vulkan-headers
|
||||||
|
, wayland
|
||||||
|
, wayland-protocols
|
||||||
|
, libxkbcommon
|
||||||
|
, glm
|
||||||
|
, gbenchmark
|
||||||
|
, libcap
|
||||||
|
, libavif
|
||||||
|
, SDL2
|
||||||
|
, pipewire
|
||||||
|
, pixman
|
||||||
|
, libinput
|
||||||
|
, glslang
|
||||||
|
, hwdata
|
||||||
|
, openvr
|
||||||
|
, stb
|
||||||
|
, wlroots
|
||||||
|
, libliftoff
|
||||||
|
, libdecor
|
||||||
|
, libdisplay-info
|
||||||
|
, lib
|
||||||
|
, makeBinaryWrapper
|
||||||
|
, patchelfUnstable
|
||||||
|
, nix-update-script
|
||||||
|
, enableExecutable ? true
|
||||||
|
, enableWsi ? true
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
joshShaders = fetchFromGitHub {
|
||||||
|
owner = "Joshua-Ashton";
|
||||||
|
repo = "GamescopeShaders";
|
||||||
|
rev = "v0.1";
|
||||||
|
hash = "sha256-gR1AeAHV/Kn4ntiEDUSPxASLMFusV6hgSGrTbMCBUZA=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "gamescope";
|
||||||
|
version = "3.14.16";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ValveSoftware";
|
||||||
|
repo = "gamescope";
|
||||||
|
rev = "0065946d1bf69584714a17698947ab80a97128bc";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
hash = "sha256-PiDXHq7/CxIOday5DQyAG6i3+ggm6zp3iSPIhq63EOk=";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Unvendor dependencies
|
||||||
|
./use-pkgconfig.patch
|
||||||
|
|
||||||
|
# Make it look for shaders in the right place
|
||||||
|
./shaders-path.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
# We can't substitute the patch itself because substituteAll is itself a derivation,
|
||||||
|
# so `placeholder "out"` ends up pointing to the wrong place
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace src/reshade_effect_manager.cpp --replace "@out@" "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
|
||||||
|
mesonFlags = [
|
||||||
|
(lib.mesonBool "enable_gamescope" enableExecutable)
|
||||||
|
(lib.mesonBool "enable_gamescope_wsi_layer" enableWsi)
|
||||||
|
"-Dc_args=-fsanitize-recover=address"
|
||||||
|
"-Dc_link_args=-fsanitize-recover=address"
|
||||||
|
"-Dcpp_args=-fsanitize-recover=address"
|
||||||
|
"-Dcpp_link_args=-fsanitize-recover=address"
|
||||||
|
"--buildtype=debugoptimized"
|
||||||
|
"-Db_sanitize=address"
|
||||||
|
];
|
||||||
|
|
||||||
|
# don't install vendored vkroots etc
|
||||||
|
mesonInstallFlags = ["--skip-subprojects"];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
dontStrip = true;
|
||||||
|
|
||||||
|
depsBuildBuild = [
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
pkg-config
|
||||||
|
ninja
|
||||||
|
] ++ lib.optionals enableExecutable [
|
||||||
|
makeBinaryWrapper
|
||||||
|
glslang
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
pipewire
|
||||||
|
hwdata
|
||||||
|
xorg.libX11
|
||||||
|
wayland
|
||||||
|
wayland-protocols
|
||||||
|
vulkan-loader
|
||||||
|
openvr
|
||||||
|
glm
|
||||||
|
] ++ lib.optionals enableWsi [
|
||||||
|
vulkan-headers
|
||||||
|
] ++ lib.optionals enableExecutable (wlroots.buildInputs ++ [ # gamescope uses a custom wlroots branch
|
||||||
|
xorg.libXcomposite
|
||||||
|
xorg.libXcursor
|
||||||
|
xorg.libXdamage
|
||||||
|
xorg.libXext
|
||||||
|
xorg.libXi
|
||||||
|
xorg.libXmu
|
||||||
|
xorg.libXrender
|
||||||
|
xorg.libXres
|
||||||
|
xorg.libXtst
|
||||||
|
xorg.libXxf86vm
|
||||||
|
libavif
|
||||||
|
libdrm
|
||||||
|
libei
|
||||||
|
libliftoff
|
||||||
|
SDL2
|
||||||
|
libdecor
|
||||||
|
libinput
|
||||||
|
libxkbcommon
|
||||||
|
gbenchmark
|
||||||
|
pixman
|
||||||
|
libcap
|
||||||
|
stb
|
||||||
|
libdisplay-info
|
||||||
|
]);
|
||||||
|
|
||||||
|
postInstall = lib.optionalString enableExecutable ''
|
||||||
|
# using patchelf unstable because the stable version corrupts the binary
|
||||||
|
${lib.getExe patchelfUnstable} $out/bin/gamescope \
|
||||||
|
--add-rpath ${vulkan-loader}/lib \
|
||||||
|
--add-needed ${libgcc.lib}/lib/libasan.so.8 \
|
||||||
|
--add-needed libvulkan.so.1
|
||||||
|
|
||||||
|
LD_PRELOAD="${libgcc.lib}/lib/libasan.so.8"
|
||||||
|
|
||||||
|
# --debug-layers flag expects these in the path
|
||||||
|
wrapProgram "$out/bin/gamescope" \
|
||||||
|
--prefix PATH : ${with xorg; lib.makeBinPath [xprop xwininfo]}
|
||||||
|
|
||||||
|
# Install ReShade shaders
|
||||||
|
mkdir -p $out/share/gamescope/reshade
|
||||||
|
cp -r ${joshShaders}/* $out/share/gamescope/reshade/
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = nix-update-script {};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "SteamOS session compositing window manager";
|
||||||
|
homepage = "https://github.com/ValveSoftware/gamescope";
|
||||||
|
license = licenses.bsd2;
|
||||||
|
maintainers = with maintainers; [ nrdxp pedrohlc Scrumplex zhaofengli k900 ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
mainProgram = "gamescope";
|
||||||
|
};
|
||||||
|
})
|
||||||
13
pkgs/gamescope-dbg/shaders-path.patch
Normal file
13
pkgs/gamescope-dbg/shaders-path.patch
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/src/reshade_effect_manager.cpp b/src/reshade_effect_manager.cpp
|
||||||
|
index 3597ca1..de45250 100644
|
||||||
|
--- a/src/reshade_effect_manager.cpp
|
||||||
|
+++ b/src/reshade_effect_manager.cpp
|
||||||
|
@@ -34,7 +34,7 @@ static std::string GetLocalUsrDir()
|
||||||
|
|
||||||
|
static std::string GetUsrDir()
|
||||||
|
{
|
||||||
|
- return "/usr";
|
||||||
|
+ return "@out@";
|
||||||
|
}
|
||||||
|
|
||||||
|
static LogScope reshade_log("gamescope_reshade");
|
||||||
9
pkgs/gamescope-dbg/use-pkgconfig.patch
Normal file
9
pkgs/gamescope-dbg/use-pkgconfig.patch
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -6,7 +6,6 @@ project(
|
||||||
|
default_options: [
|
||||||
|
'cpp_std=c++20',
|
||||||
|
'warning_level=2',
|
||||||
|
- 'force_fallback_for=wlroots,libliftoff,vkroots',
|
||||||
|
],
|
||||||
|
)
|
||||||
157
pkgs/gamescope-old/default.nix
Normal file
157
pkgs/gamescope-old/default.nix
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
{ stdenv
|
||||||
|
, fetchFromGitHub
|
||||||
|
, meson
|
||||||
|
, pkg-config
|
||||||
|
, ninja
|
||||||
|
, xorg
|
||||||
|
, libdrm
|
||||||
|
, libei
|
||||||
|
, vulkan-loader
|
||||||
|
, vulkan-headers
|
||||||
|
, wayland
|
||||||
|
, wayland-protocols
|
||||||
|
, libxkbcommon
|
||||||
|
, glm
|
||||||
|
, gbenchmark
|
||||||
|
, libcap
|
||||||
|
, libavif
|
||||||
|
, SDL2
|
||||||
|
, pipewire
|
||||||
|
, pixman
|
||||||
|
, libinput
|
||||||
|
, glslang
|
||||||
|
, hwdata
|
||||||
|
, openvr
|
||||||
|
, stb
|
||||||
|
, wlroots
|
||||||
|
, libliftoff
|
||||||
|
, libdecor
|
||||||
|
, libdisplay-info
|
||||||
|
, lib
|
||||||
|
, makeBinaryWrapper
|
||||||
|
, patchelfUnstable
|
||||||
|
, nix-update-script
|
||||||
|
, enableExecutable ? true
|
||||||
|
, enableWsi ? true
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
joshShaders = fetchFromGitHub {
|
||||||
|
owner = "Joshua-Ashton";
|
||||||
|
repo = "GamescopeShaders";
|
||||||
|
rev = "v0.1";
|
||||||
|
hash = "sha256-gR1AeAHV/Kn4ntiEDUSPxASLMFusV6hgSGrTbMCBUZA=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "gamescope";
|
||||||
|
version = "3.14.16";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ValveSoftware";
|
||||||
|
repo = "gamescope";
|
||||||
|
rev = "d0d23c4c3010c81add1bd90cbe478ce4a386e28d";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
hash = "sha256-Ym1kl9naAm1MGlxCk32ssvfiOlstHiZPy7Ga8EZegus=";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Unvendor dependencies
|
||||||
|
./use-pkgconfig.patch
|
||||||
|
|
||||||
|
# Make it look for shaders in the right place
|
||||||
|
./shaders-path.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
# We can't substitute the patch itself because substituteAll is itself a derivation,
|
||||||
|
# so `placeholder "out"` ends up pointing to the wrong place
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace src/reshade_effect_manager.cpp --replace "@out@" "$out"
|
||||||
|
'';
|
||||||
|
|
||||||
|
|
||||||
|
mesonFlags = [
|
||||||
|
(lib.mesonBool "enable_gamescope" enableExecutable)
|
||||||
|
(lib.mesonBool "enable_gamescope_wsi_layer" enableWsi)
|
||||||
|
];
|
||||||
|
|
||||||
|
# don't install vendored vkroots etc
|
||||||
|
mesonInstallFlags = ["--skip-subprojects"];
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
|
||||||
|
depsBuildBuild = [
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
pkg-config
|
||||||
|
ninja
|
||||||
|
] ++ lib.optionals enableExecutable [
|
||||||
|
makeBinaryWrapper
|
||||||
|
glslang
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
pipewire
|
||||||
|
hwdata
|
||||||
|
xorg.libX11
|
||||||
|
wayland
|
||||||
|
wayland-protocols
|
||||||
|
vulkan-loader
|
||||||
|
openvr
|
||||||
|
glm
|
||||||
|
] ++ lib.optionals enableWsi [
|
||||||
|
vulkan-headers
|
||||||
|
] ++ lib.optionals enableExecutable (wlroots.buildInputs ++ [ # gamescope uses a custom wlroots branch
|
||||||
|
xorg.libXcomposite
|
||||||
|
xorg.libXcursor
|
||||||
|
xorg.libXdamage
|
||||||
|
xorg.libXext
|
||||||
|
xorg.libXi
|
||||||
|
xorg.libXmu
|
||||||
|
xorg.libXrender
|
||||||
|
xorg.libXres
|
||||||
|
xorg.libXtst
|
||||||
|
xorg.libXxf86vm
|
||||||
|
libavif
|
||||||
|
libdrm
|
||||||
|
libei
|
||||||
|
libliftoff
|
||||||
|
SDL2
|
||||||
|
libdecor
|
||||||
|
libinput
|
||||||
|
libxkbcommon
|
||||||
|
gbenchmark
|
||||||
|
pixman
|
||||||
|
libcap
|
||||||
|
stb
|
||||||
|
libdisplay-info
|
||||||
|
]);
|
||||||
|
|
||||||
|
postInstall = lib.optionalString enableExecutable ''
|
||||||
|
# using patchelf unstable because the stable version corrupts the binary
|
||||||
|
${lib.getExe patchelfUnstable} $out/bin/gamescope \
|
||||||
|
--add-rpath ${vulkan-loader}/lib \
|
||||||
|
--add-needed libvulkan.so.1 \
|
||||||
|
|
||||||
|
# --debug-layers flag expects these in the path
|
||||||
|
wrapProgram "$out/bin/gamescope" \
|
||||||
|
--prefix PATH : ${with xorg; lib.makeBinPath [xprop xwininfo]}
|
||||||
|
|
||||||
|
# Install ReShade shaders
|
||||||
|
mkdir -p $out/share/gamescope/reshade
|
||||||
|
cp -r ${joshShaders}/* $out/share/gamescope/reshade/
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = nix-update-script {};
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "SteamOS session compositing window manager";
|
||||||
|
homepage = "https://github.com/ValveSoftware/gamescope";
|
||||||
|
license = licenses.bsd2;
|
||||||
|
maintainers = with maintainers; [ nrdxp pedrohlc Scrumplex zhaofengli k900 ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
mainProgram = "gamescope";
|
||||||
|
};
|
||||||
|
})
|
||||||
13
pkgs/gamescope-old/shaders-path.patch
Normal file
13
pkgs/gamescope-old/shaders-path.patch
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/src/reshade_effect_manager.cpp b/src/reshade_effect_manager.cpp
|
||||||
|
index 3597ca1..de45250 100644
|
||||||
|
--- a/src/reshade_effect_manager.cpp
|
||||||
|
+++ b/src/reshade_effect_manager.cpp
|
||||||
|
@@ -34,7 +34,7 @@ static std::string GetLocalUsrDir()
|
||||||
|
|
||||||
|
static std::string GetUsrDir()
|
||||||
|
{
|
||||||
|
- return "/usr";
|
||||||
|
+ return "@out@";
|
||||||
|
}
|
||||||
|
|
||||||
|
static LogScope reshade_log("gamescope_reshade");
|
||||||
9
pkgs/gamescope-old/use-pkgconfig.patch
Normal file
9
pkgs/gamescope-old/use-pkgconfig.patch
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -6,7 +6,6 @@ project(
|
||||||
|
default_options: [
|
||||||
|
'cpp_std=c++20',
|
||||||
|
'warning_level=2',
|
||||||
|
- 'force_fallback_for=wlroots,libliftoff,vkroots',
|
||||||
|
],
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user