Compare commits
39 Commits
modern
...
cb224894b8
| Author | SHA1 | Date | |
|---|---|---|---|
| cb224894b8 | |||
| 29453240ed | |||
| c3526e6eac | |||
| e0ca2aa3bf | |||
| 8aa7f53eca | |||
| 9b4c4991c4 | |||
| f040c4b610 | |||
| fac71ff78d | |||
| 1aa0ab9044 | |||
| 0f17915e8c | |||
| 171564d6dc | |||
| 4920a65aa2 | |||
| fc71417bc7 | |||
| 1aa742d2b2 | |||
| d0339032fa | |||
| 4f7a30197a | |||
| 2dcdd0b29a | |||
| 638b2e54dc | |||
| c11b7205bd | |||
| caada5a969 | |||
| ceb17c3a34 | |||
| e619754e92 | |||
| 068a46a9bf | |||
| 2cbe32f561 | |||
| e90d182cde | |||
| 2bede8d2bc | |||
| 1bb5ea283f | |||
| 173f9a08ca | |||
| 61e3f29db2 | |||
| 9a44776d59 | |||
| c83ad31922 | |||
| 990b154250 | |||
| 4cb03bcbbb | |||
| 5f6dbaac10 | |||
| 9a24848f21 | |||
| 10e9e6e426 | |||
| e11b3547d4 | |||
| d80c5c1074 | |||
| 954407bfa0 |
+10
-8
@@ -1,5 +1,8 @@
|
||||
{
|
||||
myConfig = {
|
||||
macos = {
|
||||
Username = "lsoriano";
|
||||
};
|
||||
essentials = {
|
||||
# !!! replace it with your own, else system might malfunction.
|
||||
Username = "kenji";
|
||||
@@ -17,7 +20,7 @@
|
||||
nixos = {
|
||||
Hostname = "hakase";
|
||||
Timezone = "America/Chicago";
|
||||
enableSteamOS = true;
|
||||
enableSteamOS = false;
|
||||
|
||||
Boot = {
|
||||
mode = "systemd"; # systemd or grub
|
||||
@@ -26,23 +29,22 @@
|
||||
packages = pkgs:
|
||||
with pkgs; [
|
||||
jellyfin-media-player
|
||||
usbutils
|
||||
pciutils
|
||||
delfin
|
||||
goverlay
|
||||
geekbench_6
|
||||
gparted
|
||||
ntfs3g
|
||||
todoist
|
||||
feishin
|
||||
discord
|
||||
xfce.thunar
|
||||
];
|
||||
};
|
||||
Hyprland = {
|
||||
enable = false;
|
||||
monitors = [
|
||||
"DP-1, highres@165,0x1080,1,vrr,1"
|
||||
"DP-2, highres@highrr,0x0,1"
|
||||
# "DP-2, highres@165,0x1080,1,vrr,1"
|
||||
# "DP-2, highres@180,0x1080,1,cm,hdr, sdrbrightness, 1.5, sdrsaturation, 0.98"
|
||||
"DP-2, highres@180,0x1080,1,bitdepth,10,cm,hdr,sdrbrightness,1.4,sdrsaturation,0.98"
|
||||
"DP-1, highres@highrr,0x0,1"
|
||||
"HDMI-A-1, 1920x1080@120, 20000x20000,1"
|
||||
# "HDMI-A-1, disabled"
|
||||
];
|
||||
@@ -64,7 +66,7 @@
|
||||
sshUser = "";
|
||||
sshKey = "";
|
||||
system = "";
|
||||
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
|
||||
supportedFeatures = ["apple-virt" "big-parallel" "kvm" "nixos-test"];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
Generated
+584
-209
File diff suppressed because it is too large
Load Diff
@@ -6,18 +6,21 @@
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||
|
||||
nur = {
|
||||
url = "github:nix-community/NUR";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
jovian = {
|
||||
url = "github:Jovian-Experiments/Jovian-NixOS";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
hyprland.inputs.nixpkgs.follows = "nixpkgs";
|
||||
matugen = {
|
||||
url = "github:/InioX/Matugen";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
# ref = "refs/tags/matugen-v0.10.0";
|
||||
};
|
||||
|
||||
hyprland = {
|
||||
url = "github:hyprwm/Hyprland";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
@@ -34,18 +37,8 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
matugen = {
|
||||
url = "github:/InioX/Matugen";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
quickshell = {
|
||||
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
caelestia-shell = {
|
||||
url = "git+https://git.sakamoto.dev/kenji/caelestia-nix";
|
||||
illogical-impulse = {
|
||||
url = "git+https://git.sakamoto.dev/kenji/illogical-impulse.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
@@ -53,61 +46,67 @@
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
home-manager,
|
||||
darwin,
|
||||
chaotic,
|
||||
jovian,
|
||||
nixovim,
|
||||
illogical-impulse,
|
||||
...
|
||||
} @ inputs: let
|
||||
config = import ./config.nix;
|
||||
|
||||
mkArgs = system:
|
||||
system = "x86_64-linux";
|
||||
args =
|
||||
{
|
||||
inherit inputs system;
|
||||
}
|
||||
// config;
|
||||
|
||||
systems = ["x86_64-linux" "aarch64-linux"];
|
||||
in
|
||||
flake-utils.lib.eachSystem systems (system: let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
hakase = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = args;
|
||||
modules = [
|
||||
chaotic.nixosModules.default
|
||||
home-manager.nixosModules.home-manager
|
||||
jovian.nixosModules.default
|
||||
./hosts/hakase/configuration.nix
|
||||
];
|
||||
};
|
||||
args = mkArgs system;
|
||||
in {
|
||||
})
|
||||
// {
|
||||
nixosConfigurations = {
|
||||
hakase = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = mkArgs "x86_64-linux";
|
||||
modules = [
|
||||
./hosts/hakase/configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
homeConfigurations = {
|
||||
hakase = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import nixpkgs {
|
||||
system = "x86_64-linux";
|
||||
config.allowUnfree = true;
|
||||
extraSpecialArgs = mkArgs "x86_64-linux";
|
||||
};
|
||||
modules = [
|
||||
./home/hakase.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
darwinConfigurations = {
|
||||
macos = darwin.lib.darwinSystem {
|
||||
system = "aarch64-darwin";
|
||||
specialArgs = mkArgs "aarch64-darwin";
|
||||
modules = [
|
||||
./hosts/macos/darwin.nix
|
||||
];
|
||||
};
|
||||
vanilla = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = args;
|
||||
modules = [
|
||||
./hosts/vanilla/configuration.nix
|
||||
# nixovim.packages.${system}.full
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
homeConfigurations = {
|
||||
hakase = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import nixpkgs {
|
||||
config.allowUnfree = true;
|
||||
extraSpecialArgs = args;
|
||||
};
|
||||
modules = [
|
||||
home-manager.nixosModules.home-manager
|
||||
./home/hakase.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
darwinConfigurations = {
|
||||
macos = darwin.lib.darwinSystem {
|
||||
system = "aarch64-darwin";
|
||||
specialArgs =
|
||||
{
|
||||
inherit inputs;
|
||||
system = "aarch64-darwin";
|
||||
}
|
||||
// config;
|
||||
modules = [
|
||||
home-manager.darwinModules.home-manager
|
||||
./hosts/macos/darwin.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ in {
|
||||
# inputs.chaotic.homeManagerModules.default
|
||||
../modules/home/desktop.nix
|
||||
../modules/home/terminal.nix
|
||||
../modules/home/apps.nix
|
||||
];
|
||||
# nix.package = pkgs.nix;
|
||||
home.packages = info.myConfig.nixos.Apps.packages pkgs;
|
||||
|
||||
+103
-143
@@ -7,20 +7,27 @@
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.chaotic.nixosModules.default
|
||||
./hardware-configuration.nix
|
||||
../../modules/default/apps.nix
|
||||
../../modules/default/desktop.nix
|
||||
../../modules/default/dev.nix
|
||||
../../modules/default/remote.nix
|
||||
../../modules/default/gaming.nix
|
||||
../../modules/default/udev.nix
|
||||
../../modules/default/boot.nix
|
||||
../../modules/default/dev.nix
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
pavucontrol
|
||||
wl-clipboard
|
||||
wget
|
||||
protontricks
|
||||
];
|
||||
system.stateVersion = "25.05";
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
time.timeZone = "${myConfig.nixos.Timezone}";
|
||||
|
||||
console = {
|
||||
earlySetup = false;
|
||||
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
||||
packages = with pkgs; [terminus_font];
|
||||
useXkbConfig = true;
|
||||
};
|
||||
|
||||
users = {
|
||||
defaultUserShell = pkgs.${myConfig.general.Terminal.shell};
|
||||
@@ -34,6 +41,7 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
backupFileExtension = "backup";
|
||||
useGlobalPkgs = true;
|
||||
@@ -44,92 +52,6 @@
|
||||
|
||||
nixpkgs.config.allowUnfree = myConfig.general.allowUnfree;
|
||||
|
||||
hardware.logitech.wireless.enable = true;
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.powerOnBoot = true;
|
||||
hardware.bluetooth.settings = {
|
||||
General = {
|
||||
AutoEnable = true;
|
||||
Experimental = true;
|
||||
MultiProfile = "multiple";
|
||||
FastConnectable = true;
|
||||
};
|
||||
};
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
time.timeZone = "${myConfig.nixos.Timezone}";
|
||||
|
||||
boot.loader = {
|
||||
systemd-boot = lib.mkIf (myConfig.nixos.Boot.mode == "systemd") {
|
||||
enable = true;
|
||||
};
|
||||
grub = lib.mkIf (myConfig.nixos.Boot.mode == "grub") {
|
||||
efiSupport = true;
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
useOSProber = true;
|
||||
};
|
||||
efi = {
|
||||
canTouchEfiVariables = true;
|
||||
efiSysMountPoint = "/boot";
|
||||
};
|
||||
};
|
||||
|
||||
programs.ssh.extraConfig = myConfig.optionals.Ssh.extraConfig;
|
||||
|
||||
programs.bash = {
|
||||
interactiveShellInit = ''
|
||||
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||
then
|
||||
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
fish.enable = true;
|
||||
};
|
||||
|
||||
services = {
|
||||
displayManager.sessionPackages = [inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland];
|
||||
# getty.autologinUser = "${myConfig.essentials.Username}";
|
||||
# greetd = {
|
||||
# enable = true;
|
||||
# settings.default_session = {
|
||||
# user = "${myConfig.essentials.Username}";
|
||||
# command = "Hyprland";
|
||||
# };
|
||||
# };
|
||||
|
||||
seatd.enable = true;
|
||||
upower.enable = true;
|
||||
scx.enable = true; # by default uses scx_rustland scheduler
|
||||
libinput.enable = true;
|
||||
blueman.enable = true;
|
||||
printing.enable = true;
|
||||
openssh.enable = true;
|
||||
pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
|
||||
# lowLatency = {
|
||||
# enable = true;
|
||||
# quantum = 64;
|
||||
# rate = 48000;
|
||||
# };
|
||||
};
|
||||
};
|
||||
# make pipewire realtime-capable
|
||||
security.rtkit.enable = true;
|
||||
|
||||
nix = {
|
||||
distributedBuilds = true;
|
||||
settings = {
|
||||
@@ -139,66 +61,104 @@
|
||||
};
|
||||
};
|
||||
|
||||
console = {
|
||||
earlySetup = false;
|
||||
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
||||
packages = with pkgs; [terminus_font];
|
||||
useXkbConfig = true;
|
||||
hardware = {
|
||||
enableAllFirmware = true;
|
||||
logitech.wireless.enable = true;
|
||||
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings = {
|
||||
General = {
|
||||
# AutoEnable = true;
|
||||
Experimental = true;
|
||||
MultiProfile = "multiple";
|
||||
FastConnectable = true;
|
||||
# ControllerMode = "bredr";
|
||||
};
|
||||
Policy = {
|
||||
AutoEnable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
|
||||
xone.enable = true;
|
||||
};
|
||||
|
||||
networking = {
|
||||
# wakeOnLan.enable = true;
|
||||
networkmanager.enable = true;
|
||||
firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [22 80];
|
||||
allowedUDPPorts = [53];
|
||||
};
|
||||
proxy.default = null;
|
||||
proxy.noProxy = null;
|
||||
proxy = {
|
||||
default = null;
|
||||
noProxy = null;
|
||||
};
|
||||
};
|
||||
|
||||
boot.loader.timeout = 0;
|
||||
boot.loader.limine.maxGenerations = 5;
|
||||
hardware.amdgpu.initrd.enable = true;
|
||||
|
||||
boot.kernelParams = [
|
||||
"quiet"
|
||||
"splash"
|
||||
"boot.shell_on_fail"
|
||||
"udev.log_priority=3"
|
||||
"rd.systemd.show_status=auto"
|
||||
"iommu=pt"
|
||||
"amd_pstate=active"
|
||||
];
|
||||
boot.kernelPackages = pkgs.linuxPackages_cachyos;
|
||||
boot.kernel.sysctl = {
|
||||
"kernel.split_lock_mitigate" = 0;
|
||||
"kernel.nmi_watchdog" = 0;
|
||||
"kernel.sched_bore" = "1";
|
||||
systemd = {
|
||||
network.enable = true;
|
||||
extraConfig = "DefaultTimeoutStopSec=5s";
|
||||
};
|
||||
|
||||
boot.initrd = {
|
||||
systemd.enable = true;
|
||||
kernelModules = [];
|
||||
verbose = false;
|
||||
};
|
||||
boot.plymouth.enable = true;
|
||||
boot.plymouth.theme = "seal";
|
||||
boot.plymouth.themePackages = with pkgs; [
|
||||
# By default we would install all themes
|
||||
(adi1090x-plymouth-themes.override {
|
||||
selected_themes = ["seal"];
|
||||
})
|
||||
];
|
||||
boot.consoleLogLevel = 0;
|
||||
systemd.extraConfig = "DefaultTimeoutStopSec=5s";
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
system.stateVersion = "25.05";
|
||||
programs = {
|
||||
bash.interactiveShellInit = ''
|
||||
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]; then
|
||||
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||
fi
|
||||
'';
|
||||
zsh.enable = true;
|
||||
fish.enable = true;
|
||||
|
||||
appimage = {
|
||||
enable = true;
|
||||
binfmt = true;
|
||||
};
|
||||
|
||||
ssh.extraConfig = myConfig.optionals.Ssh.extraConfig;
|
||||
};
|
||||
|
||||
services = {
|
||||
displayManager.sessionPackages = [
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
|
||||
];
|
||||
|
||||
getty.autologinUser = lib.mkOverride 10 "${myConfig.essentials.Username}";
|
||||
|
||||
# greetd = {
|
||||
# enable = true;
|
||||
# settings.default_session = {
|
||||
# user = lib.mkOverride 10 "${myConfig.essentials.Username}";
|
||||
# command = lib.mkOverride 10 "Hyprland";
|
||||
# };
|
||||
# };
|
||||
|
||||
flatpak.enable = true;
|
||||
seatd.enable = true;
|
||||
upower.enable = true;
|
||||
scx.enable = true;
|
||||
libinput.enable = true;
|
||||
blueman.enable = true;
|
||||
printing.enable = true;
|
||||
openssh.enable = true;
|
||||
|
||||
pipewire = {
|
||||
enable = true;
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
pulse.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,19 +8,19 @@
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" ];
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/532ac73e-1370-4e4d-9d5a-15033de0b96d";
|
||||
{ device = "/dev/disk/by-uuid/43a2db2f-a691-4094-b4c7-11853627de39";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@" ];
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/1368-D3F3";
|
||||
{ device = "/dev/disk/by-uuid/C4BB-A8B7";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
+7
-20
@@ -3,45 +3,32 @@
|
||||
myConfig,
|
||||
inputs,
|
||||
system,
|
||||
mkArgs,
|
||||
specialArgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
../../modules/default/darwin.nix
|
||||
inputs.home-manager.darwinModules.home-manager
|
||||
];
|
||||
# List packages installed in system profile. To search by name, run:
|
||||
# $ nix-env -qaP | grep wget
|
||||
environment.systemPackages = [];
|
||||
|
||||
# Auto upgrade nix package and the daemon service.
|
||||
# services.nix-daemon.enable = true;
|
||||
# services.karabiner-elements.enable = true;
|
||||
# nix.package = pkgs.nix;
|
||||
|
||||
# Necessary for using flakes on this system.
|
||||
nix.settings.experimental-features = "nix-command flakes";
|
||||
nix.settings.trusted-users = myConfig.optionals.Builds.trustedUsers;
|
||||
# nix.settings.trusted-users = myConfig.optionals.Builds.trustedUsers;
|
||||
|
||||
# Create /etc/zshrc that loads the nix-darwin environment.
|
||||
programs.zsh.enable = true; # default shell on catalina
|
||||
programs.fish.enable = true;
|
||||
|
||||
# $ darwin-rebuild changelog
|
||||
system.stateVersion = 5;
|
||||
|
||||
# The platform the configuration will be used on.
|
||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||
security.pam.services.sudo_local.touchIdAuth = true;
|
||||
|
||||
users.users.${myConfig.essentials.Username} = {
|
||||
name = "${myConfig.essentials.Username}";
|
||||
home = "/Users/${myConfig.essentials.Username}";
|
||||
# shell = pkgs.${myConfig.general.terminal.Shell}; # no support for nix-darwin, but can be changed via chsh.
|
||||
users.users.${myConfig.macos.Username} = {
|
||||
name = "${myConfig.macos.Username}";
|
||||
home = "/Users/${myConfig.macos.Username}";
|
||||
};
|
||||
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.extraSpecialArgs = mkArgs system;
|
||||
home-manager.users.${myConfig.essentials.Username} = import ../../home/darwin.nix;
|
||||
home-manager.extraSpecialArgs = specialArgs;
|
||||
home-manager.users.${myConfig.macos.Username} = import ../../home/darwin.nix;
|
||||
}
|
||||
|
||||
@@ -1,169 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
myConfig,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
inputs.chaotic.nixosModules.default
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
####################
|
||||
# Boot & Kernel #
|
||||
####################
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.loader.timeout = 0;
|
||||
boot.loader.limine.maxGenerations = 5;
|
||||
hardware.amdgpu.initrd.enable = true;
|
||||
|
||||
boot.kernelParams = ["quiet"];
|
||||
boot.kernelPackages = pkgs.linuxPackages_cachyos;
|
||||
boot.kernel.sysctl = {
|
||||
"kernel.split_lock_mitigate" = 0;
|
||||
"kernel.nmi_watchdog" = 0;
|
||||
"kernel.sched_bore" = "1";
|
||||
};
|
||||
|
||||
boot.initrd = {
|
||||
systemd.enable = true;
|
||||
kernelModules = [];
|
||||
verbose = false;
|
||||
};
|
||||
boot.plymouth.enable = true;
|
||||
boot.consoleLogLevel = 0;
|
||||
systemd.extraConfig = "DefaultTimeoutStopSec=5s";
|
||||
|
||||
################
|
||||
# FileSystems #
|
||||
################
|
||||
# fileSystems."/" = {
|
||||
# options = ["compress=zstd"];
|
||||
# };
|
||||
|
||||
############
|
||||
# Network #
|
||||
############
|
||||
networking = {
|
||||
networkmanager.enable = true;
|
||||
firewall.enable = false;
|
||||
hostName = "nixos";
|
||||
};
|
||||
|
||||
#################
|
||||
# Bluetooth #
|
||||
#################
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth.settings = {
|
||||
General = {
|
||||
MultiProfile = "multiple";
|
||||
FastConnectable = true;
|
||||
};
|
||||
};
|
||||
|
||||
#################
|
||||
# Sound & RTKit #
|
||||
#################
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
########################
|
||||
# Graphical & Greetd #
|
||||
########################
|
||||
|
||||
services.xserver.enable = false;
|
||||
services.getty.autologinUser = "steamos";
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings.default_session = {
|
||||
user = "${myConfig.essentials.Username}";
|
||||
command = "steam-gamescope > /dev/null 2>&1";
|
||||
};
|
||||
};
|
||||
|
||||
########################
|
||||
# Programs & Gaming #
|
||||
########################
|
||||
services.automatic-timezoned.enable = true;
|
||||
services.flatpak.enable = true;
|
||||
xdg.portal.enable = true;
|
||||
xdg.portal.config.common.default = "*";
|
||||
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
||||
|
||||
# programs.steam.gamescopeSession.args = ["-w 1920" "-h 1080" "-r 120" "--xwayland-count 2" "-e" "--hdr-enabled" "--mangoapp"];
|
||||
|
||||
programs = {
|
||||
appimage = {
|
||||
enable = true;
|
||||
binfmt = true;
|
||||
};
|
||||
fish = {enable = true;};
|
||||
mosh = {enable = true;};
|
||||
tmux = {enable = true;};
|
||||
gamescope.capSysNice = true;
|
||||
steam = {
|
||||
enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
extraCompatPackages = with pkgs; [proton-ge-bin];
|
||||
extraPackages = with pkgs; [
|
||||
mangohud
|
||||
gamescope-wsi
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
environment.sessionVariables = {
|
||||
PROTON_USE_NTSYNC = "1";
|
||||
ENABLE_HDR_WSI = "1";
|
||||
DXVK_HDR = "1";
|
||||
PROTON_ENABLE_AMD_AGS = "1";
|
||||
PROTON_ENABLE_NVAPI = "1";
|
||||
ENABLE_GAMESCOPE_WSI = "1";
|
||||
STEAM_MULTIPLE_XWAYLANDS = "1";
|
||||
};
|
||||
|
||||
###################
|
||||
# Virtualization #
|
||||
###################
|
||||
virtualisation.docker.enable = true;
|
||||
virtualisation.docker.enableOnBoot = false;
|
||||
virtualisation.libvirtd.enable = true;
|
||||
|
||||
###############
|
||||
# Users #
|
||||
###############
|
||||
users.users.${myConfig.essentials.Username} = {
|
||||
isNormalUser = true;
|
||||
description = "SteamOS user";
|
||||
extraGroups = ["networkmanager" "wheel" "docker" "video" "seat" "audio" "libvirtd"];
|
||||
# password = "steamos";
|
||||
};
|
||||
|
||||
#################
|
||||
# Security #
|
||||
#################
|
||||
security.sudo.wheelNeedsPassword = false;
|
||||
security.polkit.enable = true;
|
||||
services.seatd.enable = true;
|
||||
services.openssh.enable = true;
|
||||
|
||||
######################
|
||||
######################
|
||||
|
||||
########################
|
||||
# System State Version #
|
||||
########################
|
||||
system.stateVersion = "25.05";
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page, on
|
||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
myConfig,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
# networking.hostName = "nixos"; # Define your hostname.
|
||||
# Pick only one of the below networking options.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "${myConfig.nixos.Timezone}";
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console = {
|
||||
earlySetup = false;
|
||||
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
||||
packages = with pkgs; [terminus_font];
|
||||
useXkbConfig = true;
|
||||
};
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
# services.xserver.enable = true;
|
||||
|
||||
# Configure keymap in X11
|
||||
# services.xserver.xkb.layout = "us";
|
||||
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
# services.printing.enable = true;
|
||||
|
||||
# Enable sound.
|
||||
# services.pulseaudio.enable = true;
|
||||
# OR
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
services = {
|
||||
blueman.enable = true;
|
||||
};
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.libinput.enable = true;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.${myConfig.essentials.Username} = {
|
||||
isNormalUser = true;
|
||||
extraGroups = ["wheel"]; # Enable ‘sudo’ for the user.
|
||||
packages = with pkgs; [
|
||||
tree
|
||||
];
|
||||
};
|
||||
|
||||
# programs.firefox.enable = true;
|
||||
|
||||
# List packages installed in system profile.
|
||||
# You can use https://search.nixos.org/ to find more packages (and options).
|
||||
environment.systemPackages = with pkgs; [
|
||||
inputs.nixovim.packages.${system}.full
|
||||
# linux-firmware
|
||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
wget
|
||||
];
|
||||
|
||||
hardware.firmware = [
|
||||
pkgs.linux-firmware
|
||||
];
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# Copy the NixOS configuration file and link it from the resulting system
|
||||
# (/run/current-system/configuration.nix). This is useful in case you
|
||||
# accidentally delete configuration.nix.
|
||||
# system.copySystemConfiguration = true;
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
# Most users should NEVER change this value after the initial install, for any reason,
|
||||
# even if you've upgraded your system to a new NixOS release.
|
||||
#
|
||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||
# to actually do that.
|
||||
#
|
||||
# This value being lower than the current NixOS release does NOT mean your system is
|
||||
# out of date, out of support, or vulnerable.
|
||||
#
|
||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||
# and migrated your data accordingly.
|
||||
#
|
||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||
system.stateVersion = "25.11"; # Did you read the comment?
|
||||
}
|
||||
@@ -14,13 +14,13 @@
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/532ac73e-1370-4e4d-9d5a-15033de0b96d";
|
||||
{ device = "/dev/disk/by-uuid/9f701bae-3392-4927-b27d-a905dd67edab";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@" ];
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/1368-D3F3";
|
||||
{ device = "/dev/disk/by-uuid/894C-F998";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
usbutils
|
||||
pciutils
|
||||
pavucontrol
|
||||
wget
|
||||
dualsensectl
|
||||
protontricks
|
||||
wl-clipboard
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
myConfig,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
boot = {
|
||||
loader = {
|
||||
timeout = 0;
|
||||
efi = {
|
||||
canTouchEfiVariables = true;
|
||||
efiSysMountPoint = "/boot";
|
||||
};
|
||||
systemd-boot = lib.mkIf (myConfig.nixos.Boot.mode == "systemd") {
|
||||
enable = true;
|
||||
};
|
||||
grub = lib.mkIf (myConfig.nixos.Boot.mode == "grub") {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
device = "nodev";
|
||||
useOSProber = true;
|
||||
};
|
||||
limine.maxGenerations = 5;
|
||||
};
|
||||
|
||||
plymouth = {
|
||||
enable = false;
|
||||
theme = "seal";
|
||||
themePackages = with pkgs; [
|
||||
(adi1090x-plymouth-themes.override {
|
||||
selected_themes = ["seal"];
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
kernelPackages = pkgs.linuxPackages_cachyos;
|
||||
kernelParams = [
|
||||
# "quiet"
|
||||
# "splash"
|
||||
"boot.shell_on_fail"
|
||||
"udev.log_priority=3"
|
||||
"rd.systemd.show_status=auto"
|
||||
"kvm.enable_virt_at_load=0"
|
||||
];
|
||||
|
||||
initrd = {
|
||||
systemd.enable = true;
|
||||
kernelModules = [];
|
||||
verbose = false;
|
||||
};
|
||||
|
||||
consoleLogLevel = 0;
|
||||
};
|
||||
hardware.amdgpu.initrd.enable = true;
|
||||
}
|
||||
@@ -3,18 +3,8 @@
|
||||
myConfig,
|
||||
...
|
||||
}: {
|
||||
imports =
|
||||
[
|
||||
../../packages/hyprland/default.nix
|
||||
../../packages/matugen/default.nix
|
||||
../../packages/quickshell/default.nix
|
||||
../../packages/udev/default.nix
|
||||
]
|
||||
++ [
|
||||
../../packages/steam/default.nix
|
||||
../../packages/bottles/default.nix
|
||||
]
|
||||
++ lib.optionals (myConfig.nixos.enableSteamOS == true) [
|
||||
../../packages/steam/jovian.nix
|
||||
];
|
||||
imports = [
|
||||
# ../../packages/quickshell/default.nix
|
||||
../../packages/hyprland/default.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
imports = [
|
||||
../../packages/python/default.nix
|
||||
];
|
||||
environment.systemPackages = with pkgs; [
|
||||
p7zip
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
lib,
|
||||
myConfig,
|
||||
...
|
||||
}: {
|
||||
imports =
|
||||
[
|
||||
../../packages/steam/default.nix
|
||||
]
|
||||
++ lib.optionals (myConfig.nixos.enableSteamOS == true)
|
||||
[
|
||||
../../packages/steam/jovian.nix
|
||||
];
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
imports = [
|
||||
# ../../packages/moondeck-buddy/appimage.nix
|
||||
../../packages/sunshine/default.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
services.udev.extraRules = ''
|
||||
SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="0616", ATTR{power/wakeup}="enabled"
|
||||
|
||||
|
||||
'';
|
||||
services.udev.packages = with pkgs; [
|
||||
game-devices-udev-rules
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{pkgs, ...}: {
|
||||
imports = [
|
||||
../../packages/firefox/home.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
heroic
|
||||
fcitx5
|
||||
fcitx5-mozc-ut
|
||||
kdePackages.fcitx5-configtool
|
||||
solaar
|
||||
];
|
||||
}
|
||||
+13
-24
@@ -1,26 +1,15 @@
|
||||
{
|
||||
imports =
|
||||
[
|
||||
../../packages/fonts/home.nix
|
||||
../../packages/firefox/home.nix
|
||||
|
||||
../../packages/hyprland/home.nix
|
||||
../../packages/hyprlock/home.nix
|
||||
../../packages/hypridle/home.nix
|
||||
../../packages/quickshell/home.nix
|
||||
../../packages/swww/home.nix
|
||||
../../packages/hyprsunset/home.nix
|
||||
../../packages/matugen/home.nix
|
||||
../../packages/rofi/home.nix
|
||||
../../packages/bibata/home.nix
|
||||
]
|
||||
++ [
|
||||
../../packages/solaar/home.nix
|
||||
]
|
||||
++ [
|
||||
../../packages/mangohud/home.nix
|
||||
../../packages/protonup/home.nix
|
||||
../../packages/lutris/home.nix
|
||||
../../packages/steam/home.nix
|
||||
];
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.illogical-impulse.homeManagerModules.default
|
||||
../../packages/fonts/home.nix
|
||||
];
|
||||
programs.illogical-impulse.enable = true;
|
||||
programs.illogical-impulse.settings.simpleStarship.enable = true;
|
||||
# programs.illogical-impulse.settings.simpleStarship.enable = true;
|
||||
home.packages = [
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
imports = [
|
||||
../../packages/moondeck-buddy/appimage.nix
|
||||
# ../../packages/moondeck-buddy/appimage.nix
|
||||
../../packages/sunshine/default.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
../../packages/fish/home.nix
|
||||
../../packages/kitty/home.nix
|
||||
../../packages/neovim/home.nix
|
||||
../../packages/starship/home.nix
|
||||
# ../../packages/starship/home.nix
|
||||
../../packages/fastfetch/home.nix
|
||||
../../packages/zsh/home.nix
|
||||
../../packages/zoxide/home.nix
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
node_modules/
|
||||
@girs/
|
||||
@@ -1,17 +0,0 @@
|
||||
import { App } from "astal/gtk3"
|
||||
import style from "./style.scss"
|
||||
import Bar from "./widget/Bar"
|
||||
|
||||
App.start({
|
||||
css: style,
|
||||
instanceName: "js",
|
||||
requestHandler(request, res) {
|
||||
print(request)
|
||||
res("ok")
|
||||
},
|
||||
main: () => {
|
||||
const monitors = App.get_monitors()
|
||||
const primary = monitors.find(m => m.primary) || monitors[0]
|
||||
return Bar(primary)
|
||||
}
|
||||
})
|
||||
@@ -1,3 +0,0 @@
|
||||
$background: #131318;
|
||||
$foreground: #e4e1e9;
|
||||
$primary: #bec2ff;
|
||||
Vendored
-21
@@ -1,21 +0,0 @@
|
||||
declare const SRC: string
|
||||
|
||||
declare module "inline:*" {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
|
||||
declare module "*.scss" {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
|
||||
declare module "*.blp" {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
|
||||
declare module "*.css" {
|
||||
const content: string
|
||||
export default content
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"name": "astal-shell",
|
||||
"dependencies": {
|
||||
"astal": "/home/biscuit/.local/share/ags"
|
||||
}
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
@use "sass:color";
|
||||
@use "./colors" as *;
|
||||
|
||||
// default
|
||||
// $bg: #212223;
|
||||
// $fg: #f1f1f1;
|
||||
// $accent: #378DF7;
|
||||
// $radius: 7px;
|
||||
|
||||
// Kanagawa Theme
|
||||
// $bg: #1F1F28;
|
||||
// $fg: #DCD7BA;
|
||||
// $accent: #C0A36E;
|
||||
// $radius: 7px;
|
||||
|
||||
// mstcl
|
||||
// $bg: #121212;
|
||||
// $fg: #f1f1f1;
|
||||
// $accent: #C0A36E;
|
||||
// $radius: 7px;
|
||||
|
||||
$bg: $background;
|
||||
$fg: $foreground;
|
||||
$accent: $primary;
|
||||
$radius: 7px;
|
||||
|
||||
window.Bar {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
background-color: $bg;
|
||||
color: $fg;
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
font-family: "JetBrainsMono Nerd Font";
|
||||
|
||||
label {
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
.Workspaces {
|
||||
button {
|
||||
all: unset;
|
||||
background-color: transparent;
|
||||
|
||||
&:hover label {
|
||||
background-color: color.adjust($fg, $alpha: -0.84);
|
||||
border-color: color.adjust($accent, $alpha: -0.8);
|
||||
}
|
||||
|
||||
&:active label {
|
||||
background-color: color.adjust($fg, $alpha: -0.8)
|
||||
}
|
||||
}
|
||||
|
||||
label {
|
||||
transition: 200ms;
|
||||
padding: 0 8px;
|
||||
margin: 2px;
|
||||
border-radius: $radius;
|
||||
border: 1pt solid transparent;
|
||||
}
|
||||
|
||||
.focused label {
|
||||
color: $accent;
|
||||
border-color: $accent;
|
||||
}
|
||||
}
|
||||
|
||||
.SysTray {
|
||||
margin-right: 8px;
|
||||
|
||||
button {
|
||||
padding: 0 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.Time {
|
||||
.TimeHM {
|
||||
font-weight: bold;
|
||||
color: $accent;
|
||||
}
|
||||
|
||||
.TimeDate {
|
||||
// color: color.adjust($fg, $lightness: -10%);
|
||||
color: $fg;
|
||||
opacity: 0.85;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.FocusedClient {
|
||||
color: color.adjust($fg, $lightness: -30%);
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.Media .Cover {
|
||||
min-height: 1.2em;
|
||||
min-width: 1.2em;
|
||||
border-radius: $radius;
|
||||
background-position: center;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.Battery label {
|
||||
padding-left: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.AudioSlider {
|
||||
* {
|
||||
all: unset;
|
||||
}
|
||||
|
||||
icon {
|
||||
margin-right: .6em;
|
||||
}
|
||||
|
||||
& {
|
||||
margin: 0 1em;
|
||||
}
|
||||
|
||||
trough {
|
||||
background-color: color.adjust($fg, $alpha: -0.8);
|
||||
border-radius: $radius;
|
||||
}
|
||||
|
||||
highlight {
|
||||
background-color: $accent;
|
||||
min-height: .8em;
|
||||
border-radius: $radius;
|
||||
}
|
||||
|
||||
slider {
|
||||
background-color: $fg;
|
||||
border-radius: $radius;
|
||||
min-height: 1em;
|
||||
min-width: 1em;
|
||||
margin: -.2em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"compilerOptions": {
|
||||
"experimentalDecorators": true,
|
||||
"strict": true,
|
||||
"target": "ES2022",
|
||||
"module": "ES2022",
|
||||
"moduleResolution": "Bundler",
|
||||
// "checkJs": true,
|
||||
// "allowJs": true,
|
||||
"jsx": "react-jsx",
|
||||
"jsxImportSource": "astal/gtk3",
|
||||
}
|
||||
}
|
||||
@@ -1,189 +0,0 @@
|
||||
import { App } from "astal/gtk3"
|
||||
import { Variable, GLib, bind } from "astal"
|
||||
import { Astal, Gtk, Gdk } from "astal/gtk3"
|
||||
import Hyprland from "gi://AstalHyprland"
|
||||
import Mpris from "gi://AstalMpris"
|
||||
import Battery from "gi://AstalBattery"
|
||||
import Wp from "gi://AstalWp"
|
||||
import Network from "gi://AstalNetwork"
|
||||
import Tray from "gi://AstalTray"
|
||||
|
||||
function SysTray() {
|
||||
const tray = Tray.get_default()
|
||||
|
||||
return <box className="SysTray">
|
||||
{bind(tray, "items").as(items => items.map(item => (
|
||||
<menubutton
|
||||
tooltipMarkup={bind(item, "tooltipMarkup")}
|
||||
usePopover={false}
|
||||
actionGroup={bind(item, "actionGroup").as(ag => ["dbusmenu", ag])}
|
||||
menuModel={bind(item, "menuModel")}>
|
||||
<icon gicon={bind(item, "gicon")} />
|
||||
</menubutton>
|
||||
)))}
|
||||
</box>
|
||||
}
|
||||
|
||||
function Wifi() {
|
||||
const network = Network.get_default()
|
||||
const wifi = bind(network, "wifi")
|
||||
|
||||
return <box visible={wifi.as(Boolean)}>
|
||||
{wifi.as(wifi => wifi && (
|
||||
<icon
|
||||
tooltipText={bind(wifi, "ssid").as(String)}
|
||||
className="Wifi"
|
||||
icon={bind(wifi, "iconName")}
|
||||
/>
|
||||
))}
|
||||
</box>
|
||||
|
||||
}
|
||||
|
||||
function AudioSlider() {
|
||||
const speaker = Wp.get_default()?.audio.defaultSpeaker!
|
||||
|
||||
return <box className="AudioSlider" css="min-width: 140px">
|
||||
<icon icon={bind(speaker, "volumeIcon")} />
|
||||
<slider
|
||||
hexpand
|
||||
onDragged={({ value }) => speaker.volume = value}
|
||||
value={bind(speaker, "volume")}
|
||||
/>
|
||||
</box>
|
||||
}
|
||||
|
||||
function BatteryLevel() {
|
||||
const bat = Battery.get_default()
|
||||
|
||||
return <box className="Battery"
|
||||
visible={bind(bat, "isPresent")}>
|
||||
<icon icon={bind(bat, "batteryIconName")} />
|
||||
<label label={bind(bat, "percentage").as(p =>
|
||||
`${Math.floor(p * 100)} %`
|
||||
)} />
|
||||
</box>
|
||||
}
|
||||
|
||||
function Media() {
|
||||
const mpris = Mpris.get_default()
|
||||
|
||||
return <box className="Media">
|
||||
{bind(mpris, "players").as(ps => ps[0] ? (
|
||||
<box>
|
||||
<box
|
||||
className="Cover"
|
||||
valign={Gtk.Align.CENTER}
|
||||
css={bind(ps[0], "coverArt").as(cover =>
|
||||
`background-image: url('${cover}');`
|
||||
)}
|
||||
/>
|
||||
<label
|
||||
label={bind(ps[0], "metadata").as(() =>
|
||||
`${ps[0].title} - ${ps[0].artist}`
|
||||
)}
|
||||
/>
|
||||
</box>
|
||||
) : (
|
||||
<label label="Biscuit" />
|
||||
))}
|
||||
</box>
|
||||
}
|
||||
|
||||
|
||||
function Workspaces() {
|
||||
const hypr = Hyprland.get_default();
|
||||
|
||||
return (
|
||||
<box className="Workspaces">
|
||||
{bind(hypr, "focusedWorkspace").as((fw) => {
|
||||
if (!fw) return null;
|
||||
|
||||
// Determine the current chunk of 5 visible workspace buttons
|
||||
const currentChunkStart = Math.floor((fw.id - 1) / 5) * 5 + 1;
|
||||
const visibleIds = Array.from({ length: 5 }, (_, i) => currentChunkStart + i);
|
||||
|
||||
return visibleIds.map((id) => {
|
||||
// Try to get the real workspace, fall back to a dummy one if it doesn't exist
|
||||
const ws =
|
||||
hypr.workspaces.find((w) => w.id === id) ??
|
||||
Hyprland.Workspace.dummy(id, null);
|
||||
|
||||
return (
|
||||
<button
|
||||
className={fw.id === id ? "focused" : ""}
|
||||
onClick={() => ws.focus()}
|
||||
>
|
||||
{id}
|
||||
</button>
|
||||
);
|
||||
});
|
||||
})}
|
||||
</box>
|
||||
);
|
||||
}
|
||||
|
||||
function FocusedClient() {
|
||||
const hypr = Hyprland.get_default();
|
||||
const focused = bind(hypr, "focusedClient");
|
||||
|
||||
return (
|
||||
<box className="FocusedClient" visible={focused.as(Boolean)}>
|
||||
{focused.as(client => {
|
||||
if (!client) return null;
|
||||
|
||||
return (
|
||||
<label
|
||||
label={bind(client, "title").as(title => {
|
||||
return title.length > 40
|
||||
? title.slice(0, 37) + "..."
|
||||
: title;
|
||||
})}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</box>
|
||||
);
|
||||
}
|
||||
function Time({ format = "%H:%M|%a %b %d" }) {
|
||||
const time = Variable<string>("").poll(1000, () =>
|
||||
GLib.DateTime.new_now_local().format(format)!
|
||||
);
|
||||
|
||||
return bind(time).as(str => {
|
||||
const [hm, date] = str.split("|");
|
||||
|
||||
return (
|
||||
<box className="Time">
|
||||
<label className="TimeHM" label={hm} />
|
||||
<label className="TimeDate" label={date} />
|
||||
</box>
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
export default function Bar(monitor: Gdk.Monitor) {
|
||||
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
|
||||
|
||||
return <window
|
||||
className="Bar"
|
||||
gdkmonitor={monitor}
|
||||
exclusivity={Astal.Exclusivity.EXCLUSIVE}
|
||||
anchor={TOP | LEFT | RIGHT}>
|
||||
<centerbox>
|
||||
<box hexpand halign={Gtk.Align.START}>
|
||||
<Workspaces />
|
||||
<FocusedClient />
|
||||
</box>
|
||||
<box>
|
||||
<Time />
|
||||
</box>
|
||||
<box hexpand halign={Gtk.Align.END} >
|
||||
<SysTray />
|
||||
<Wifi />
|
||||
<AudioSlider />
|
||||
<BatteryLevel />
|
||||
</box>
|
||||
</centerbox>
|
||||
</window>
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
imports = [inputs.ags.homeManagerModules.default];
|
||||
|
||||
programs.ags = {
|
||||
enable = true;
|
||||
configDir = ./custom;
|
||||
|
||||
extraPackages = let
|
||||
agsPkgs = inputs.ags.packages.${system};
|
||||
in
|
||||
with pkgs; [
|
||||
agsPkgs.battery
|
||||
agsPkgs.hyprland
|
||||
agsPkgs.mpris
|
||||
agsPkgs.wireplumber
|
||||
agsPkgs.notifd
|
||||
agsPkgs.apps
|
||||
agsPkgs.network
|
||||
agsPkgs.tray
|
||||
fzf
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
bottles
|
||||
];
|
||||
}
|
||||
@@ -40,6 +40,7 @@
|
||||
"$mod, D, global, caelestia:launcherInterrupt"
|
||||
"$mod, Escape, global, caelestia:launcherInterrupt"
|
||||
"$mod, PERIOD, global, caelestia:launcherInterrupt"
|
||||
"$mod, SPACE, global, caelestia:launcherInterrupt"
|
||||
"$mod, E, global, caelestia:launcherInterrupt"
|
||||
"$mod, V, global, caelestia:launcherInterrupt"
|
||||
|
||||
@@ -69,6 +70,8 @@
|
||||
"$mod ALT, A, global, caelestia:showall"
|
||||
"$mod ALT, L, global, caelestia:lock"
|
||||
|
||||
"$mod, SPACE, exec, rofi -show drun"
|
||||
|
||||
# Restore lock - these are `bindl` in your original, but `exec` should be fine here.
|
||||
# However, `bindl` is typically for a *release* event. If `caelestia shell -d` is a daemon,
|
||||
# and `caelestia:lock` is a quickshell internal, you might need to reconsider.
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
"workspace special:music, initialTitle:Spotify( Free)?"
|
||||
"workspace special:communication, class:discord|equibop|vesktop|whatsapp"
|
||||
"workspace special:todo, class:Todoist"
|
||||
"workspace special:steam, class:^(steam_app_.*)$"
|
||||
|
||||
"noinitialfocus, class:discord"
|
||||
"focusonactivate 0, class:discord"
|
||||
@@ -70,6 +69,7 @@
|
||||
|
||||
# Steam
|
||||
"workspace special:steam, class:steam"
|
||||
"workspace special:gaming, class:^(steam_app_.*)$"
|
||||
"rounding 10, title:, class:steam"
|
||||
"float, title:Friends List, class:steam"
|
||||
"immediate, class:steam_app_[0-9]+"
|
||||
@@ -91,15 +91,15 @@
|
||||
workspace = [
|
||||
"w[tv1]s[false], gapsout:20, gapsin:20"
|
||||
"f[1]s[false], gapsout:20, gapsin:20"
|
||||
"1, monitor:DP-1, default:true"
|
||||
"2, monitor:DP-1"
|
||||
"3, monitor:DP-1"
|
||||
"4, monitor:DP-2"
|
||||
"5, monitor:DP-2"
|
||||
"6, monitor:DP-2"
|
||||
"1, monitor:DP-2, default:true"
|
||||
"2, monitor:DP-2"
|
||||
"3, monitor:DP-2"
|
||||
"4, monitor:DP-1"
|
||||
"5, monitor:DP-1"
|
||||
"6, monitor:DP-1"
|
||||
|
||||
"special:gaming, monitor:DP-1, persistent:true"
|
||||
"special:steam, monitor:DP-1, persistent:true, on-created-empty:steam"
|
||||
"special:gaming, monitor:DP-2, persistent:true"
|
||||
"special:steam, monitor:DP-2, persistent:true, on-created-empty:steam"
|
||||
];
|
||||
|
||||
# ######## Layer rules ########
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
[config]
|
||||
# If set to enabled, it will check for updates when you run the matugen command, notifying you that an update is avaiable.
|
||||
# WARNING: Matugen needs to be compiled with the `update-informer` feature for this to work.
|
||||
version_check = false
|
||||
|
||||
[config.wallpaper]
|
||||
# The base command to run for applying the wallpaper, shouldn't have spaces in it.
|
||||
command = "swww"
|
||||
|
||||
# The arguments that will be provided to the command.
|
||||
# Keywords like {{ mode }} or anything that works inside of hooks doesn't work here.
|
||||
# The last argument will be the image path.
|
||||
arguments = ["img", "--transition-type", "center", "--transition-fps", "120"]
|
||||
|
||||
# For example, killing the wallpaper daemon. Usage is like a normal hook.
|
||||
# pre_hook = ""
|
||||
|
||||
[config.custom_keywords]
|
||||
test = "aaaa"
|
||||
|
||||
[templates.name1]
|
||||
# Relative paths will be resolved from the path `config.toml` is in.
|
||||
input_path = "./colors.whatever-extension"
|
||||
output_path = "./a/colors-generated.whatever-extension"
|
||||
|
||||
# This will use a different input path depending on what mode you use.
|
||||
# input_path_modes = { dark = "./colors.whatever-extension", light = "./colors.whatever-extension" }
|
||||
|
||||
# This will compare all of the colors inside the array with the color you set as `compare_to`, and returns the closest color to it.
|
||||
# You can then use `{{closest_color}}` inside templates and hooks.
|
||||
colors_to_compare = [
|
||||
{ name = "black", color = "#000000" },
|
||||
{ name = "red", color = "#ff0000" },
|
||||
{ name = "maroon", color = "#800000" },
|
||||
{ name = "yellow", color = "#ffff00" },
|
||||
{ name = "olive", color = "#808000" },
|
||||
{ name = "lime", color = "#00ff00" },
|
||||
{ name = "green", color = "#008000" },
|
||||
{ name = "aqua", color = "#00ffff" },
|
||||
{ name = "teal", color = "#008080" },
|
||||
{ name = "blue", color = "#0000ff" },
|
||||
{ name = "navy", color = "#000080" },
|
||||
{ name = "fuchsia", color = "#ff00ff" },
|
||||
{ name = "purple", color = "#800080" },
|
||||
]
|
||||
compare_to = "{{colors.primary.default.hex}}"
|
||||
|
||||
# Runs before the template is exported. You can use keywords here,
|
||||
pre_hook = 'echo "source color {{colors.source_color.default.hex}}, source image {{image}}, closest color {{closest_color}}"'
|
||||
# Runs after the template is exported. You can use keywords here.
|
||||
post_hook = 'echo "after gen"'
|
||||
|
||||
# Only hex values
|
||||
# https://m3.material.io/styles/color/advanced/adjust-existing-colors#1cc12e43-237b-45b9-8fe0-9a3549c1f61e
|
||||
# Blend is set to true by default.
|
||||
[config.custom_colors]
|
||||
green = "#00ff00"
|
||||
red = "#ff0000"
|
||||
blue = { color = "#0000ff", blend = false }
|
||||
|
||||
### --- my config
|
||||
[templates.kitty]
|
||||
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/kitty.conf'
|
||||
output_path = '~/.config/kitty/colors.conf'
|
||||
post_hook = "kitty @ set-colors -a -c ~/.config/kitty/colors.conf"
|
||||
|
||||
[templates.ags]
|
||||
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/ags.scss'
|
||||
output_path = '~/.config/nixos/pkgs/ags/biscuit/colors.scss'
|
||||
post_hook = "pkill gjs & ags run ~/.config/nixos/pkgs/ags/biscuit/app.ts & disown (jobs -p) &"
|
||||
@@ -1,3 +0,0 @@
|
||||
$background: {{colors.surface.dark.hex}};
|
||||
$foreground: {{colors.on_surface.dark.hex}};
|
||||
$primary: {{colors.primary.dark.hex}};
|
||||
@@ -1,41 +0,0 @@
|
||||
cursor {{colors.on_surface.default.hex}}
|
||||
cursor_text_color {{colors.on_surface_variant.default.hex}}
|
||||
|
||||
foreground {{colors.on_surface.default.hex}}
|
||||
background {{colors.surface.default.hex}}
|
||||
selection_foreground {{colors.on_secondary.default.hex}}
|
||||
selection_background {{colors.secondary_fixed_dim.default.hex}}
|
||||
url_color {{colors.primary.default.hex}}
|
||||
|
||||
# black
|
||||
color8 #262626
|
||||
color0 #4c4c4c
|
||||
|
||||
# red
|
||||
color1 #ac8a8c
|
||||
color9 #c49ea0
|
||||
|
||||
# green
|
||||
color2 #8aac8b
|
||||
color10 #9ec49f
|
||||
|
||||
# yellow
|
||||
color3 #aca98a
|
||||
color11 #c4c19e
|
||||
|
||||
# blue
|
||||
/* color4 #8f8aac */
|
||||
color4 {{colors.primary.default.hex}}
|
||||
color12 #a39ec4
|
||||
|
||||
# magenta
|
||||
color5 #ac8aac
|
||||
color13 #c49ec4
|
||||
|
||||
# cyan
|
||||
color6 #8aacab
|
||||
color14 #9ec3c4
|
||||
|
||||
# white
|
||||
color15 #e7e7e7
|
||||
color7 #f0f0f0
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [inputs.matugen.nixosModules.default];
|
||||
environment.systemPackages = with pkgs; [
|
||||
inputs.matugen.packages.${system}.default
|
||||
];
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
home.file.".config/matugen/config.toml" = {
|
||||
source = builtins.toPath ./custom/config.toml;
|
||||
};
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
pkgs,
|
||||
lib,
|
||||
fetchurl,
|
||||
myConfig,
|
||||
...
|
||||
}: let
|
||||
moondeckBuddyWrapped = pkgs.appimageTools.wrapType2 {
|
||||
@@ -17,7 +18,8 @@
|
||||
|
||||
extraPkgs = pkgs:
|
||||
with pkgs; [
|
||||
# Your extraPkgs here
|
||||
steam
|
||||
libappindicator-gtk3
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
@@ -51,7 +53,36 @@ in {
|
||||
59999 # Allow Moondeck Buddy to listen on this port
|
||||
];
|
||||
# If Moondeck Buddy also needs UDP, uncomment and add it here:
|
||||
# networking.firewall.allowedUDPPorts = [
|
||||
# 59999
|
||||
# ];
|
||||
networking.firewall.allowedUDPPorts = [
|
||||
59999
|
||||
];
|
||||
|
||||
systemd.services.moondeck-buddy = {
|
||||
description = "Moondeck Buddy service for Sunshine/Moonlight integration";
|
||||
after = ["network-online.target" "display-manager.service"]; # Ensure display manager is up
|
||||
wantedBy = ["multi-user.target"]; # Still autostart with multi-user target
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
User = "${myConfig.essentials.Username}"; # <--- IMPORTANT: User *must* have access to the display
|
||||
Group = "users";
|
||||
|
||||
ExecStart = "${moondeckBuddyWrapped}/bin/moondeck-buddy";
|
||||
|
||||
Restart = "on-failure";
|
||||
RestartSec = 5;
|
||||
|
||||
# Crucial for GUI applications running as system services:
|
||||
Environment = [
|
||||
"DISPLAY=:0" # Assuming your main display is :0. This can vary.
|
||||
# "XAUTHORITY=/home/your-username/.Xauthority" # Needed if using Xauthority
|
||||
# If using Wayland, you might need XDG_RUNTIME_DIR and WAYLAND_DISPLAY
|
||||
# "XDG_RUNTIME_DIR=/run/user/$(id -u your-username)"
|
||||
# "WAYLAND_DISPLAY=wayland-0" # Or specific to your compositor
|
||||
];
|
||||
|
||||
# You might also need to explicitly grant access, e.g., with xhost +
|
||||
# but that's a security hole. Best is to rely on user authentication.
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
...
|
||||
}: {
|
||||
home.packages = [
|
||||
inputs.nixovim.packages.${system}.default
|
||||
inputs.nixovim.packages.${system}.full
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
myConfig,
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [
|
||||
protonup
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/${myConfig.essentials.Username}/.steam/root/compatibilitytools.d";
|
||||
};
|
||||
}
|
||||
@@ -4,11 +4,12 @@
|
||||
system,
|
||||
...
|
||||
}: let
|
||||
caelestia-shell = pkgs.fetchFromGitHub {
|
||||
caelestia-shell = pkgs.fetchFromGitea {
|
||||
domain = "git.sakamoto.dev";
|
||||
owner = "caelestia-dots";
|
||||
repo = "shell";
|
||||
rev = "main";
|
||||
sha256 = "sha256-FHPCSy/Fd9hIpFA2BxhTkbwBtY9vtvsEUYC3+ZX6zNQ=";
|
||||
sha256 = "sha256-y9Wkh+9ND8GcUYhybXdEPTVY6gUb0jclnbbVi70l70Y=";
|
||||
};
|
||||
in {
|
||||
imports = [
|
||||
@@ -20,7 +21,6 @@ in {
|
||||
grim
|
||||
foot
|
||||
hyprpicker
|
||||
heroic-unwrapped
|
||||
qalculate-qt
|
||||
fuzzel
|
||||
inotify-tools
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
solaar
|
||||
];
|
||||
}
|
||||
|
||||
@@ -3,13 +3,6 @@
|
||||
myConfig,
|
||||
...
|
||||
}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
steam-run
|
||||
];
|
||||
|
||||
programs.appimage.enable = true;
|
||||
programs.appimage.binfmt = true;
|
||||
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
inputs,
|
||||
pkgs,
|
||||
myConfig,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.jovian.nixosModules.default
|
||||
];
|
||||
environment.sessionVariables = {
|
||||
DECKY_HOME = "/home/${myConfig.essentials.Username}/homebrew";
|
||||
@@ -13,29 +13,16 @@
|
||||
};
|
||||
# environment.systemPackages = with pkgs; [inputs.jovian.packages.${system}.default];
|
||||
jovian.steam.enable = true;
|
||||
jovian.steam.autoStart = true;
|
||||
jovian.steam.autoStart = false;
|
||||
jovian.steam.desktopSession = "hyprland";
|
||||
jovian.steam.user = "${myConfig.essentials.Username}";
|
||||
jovian.hardware.has.amd.gpu = true;
|
||||
|
||||
jovian.decky-loader.enable = true;
|
||||
jovian.decky-loader.user = "kenji";
|
||||
jovian.decky-loader.user = "${myConfig.essentials.Username}";
|
||||
|
||||
# jovian.steamos.enableBluetoothConfig = true;
|
||||
# jovian.steamos.useSteamOSConfig = true;
|
||||
# jovian.steamos.enableMesaPatches = true;
|
||||
jovian.steamos.useSteamOSConfig = true;
|
||||
jovian.decky-loader.extraPythonPackages = pythonPackages:
|
||||
with pythonPackages; [
|
||||
requests
|
||||
aiohttp
|
||||
];
|
||||
|
||||
# jovian.devices.steamdeck.enableControllerUdevRules = true;
|
||||
hardware = {
|
||||
xone.enable = true;
|
||||
};
|
||||
programs.nix-ld = {
|
||||
enable = true;
|
||||
libraries = pkgs.steam-run.args.multiPkgs pkgs;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.programs.sunshine;
|
||||
in {
|
||||
options.programs.sunshine = with lib; {
|
||||
enable = mkEnableOption "sunshine";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
networking.firewall.allowedTCPPortRanges = [
|
||||
{
|
||||
from = 47984;
|
||||
to = 48010;
|
||||
}
|
||||
];
|
||||
networking.firewall.allowedUDPPortRanges = [
|
||||
{
|
||||
from = 47998;
|
||||
to = 48010;
|
||||
}
|
||||
];
|
||||
security.wrappers.sunshine = {
|
||||
owner = "root";
|
||||
group = "root";
|
||||
capabilities = "cap_sys_admin+p";
|
||||
source = "${pkgs.sunshine}/bin/sunshine";
|
||||
};
|
||||
systemd.user.services.sunshine = {
|
||||
description = "Sunshine self-hosted game stream host for Moonlight";
|
||||
startLimitBurst = 5;
|
||||
startLimitIntervalSec = 500;
|
||||
serviceConfig = {
|
||||
ExecStart = "${config.security.wrapperDir}/sunshine";
|
||||
Restart = "on-failure";
|
||||
RestartSec = "5s";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
imports = [
|
||||
./config.nix
|
||||
];
|
||||
programs.sunshine.enable = true;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
sunshine
|
||||
];
|
||||
services.sunshine = {
|
||||
enable = true;
|
||||
autoStart = true;
|
||||
capSysAdmin = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{...}: {
|
||||
services.swww.enable = true;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
users.extraGroups.vboxusers.members = ["user-with-access-to-virtualbox"];
|
||||
virtualisation.virtualbox.host.enableExtensionPack = true;
|
||||
}
|
||||
Reference in New Issue
Block a user