diff --git a/flake.lock b/flake.lock index 1837afb..3c9c432 100755 --- a/flake.lock +++ b/flake.lock @@ -122,12 +122,60 @@ "type": "github" } }, + "nixpkgs_4": { + "locked": { + "lastModified": 1773821835, + "narHash": "sha256-p0tPeJJbg+PKaH741F1CWa9Bf9vf6g02HK9V/g4TkHo=", + "rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0", + "type": "tarball", + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre964859.b40629efe5d6/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" + } + }, "root": { "inputs": { "home-manager": "home-manager", "impermanence": "impermanence", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_3", + "spicetify-nix": "spicetify-nix" + } + }, + "spicetify-nix": { + "inputs": { + "nixpkgs": "nixpkgs_4", + "systems": "systems" + }, + "locked": { + "lastModified": 1774157037, + "narHash": "sha256-kJpgEIF0sxMW0vx543m3AwyqptJOxPoOJY1DfJ4jQas=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "2e2234c2932a3aff5f845cda33cb1972a9e889aa", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 33ebf29..02fcda0 100755 --- a/flake.nix +++ b/flake.nix @@ -6,13 +6,14 @@ impermanence.url = "github:nix-community/impermanence"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; home-manager.url = "github:nix-community/home-manager"; + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; }; - outputs = { self, nixpkgs, impermanence, nixos-hardware, home-manager, ... }: + outputs = { self, nixpkgs, impermanence, nixos-hardware, home-manager, spicetify-nix, ... }: let mkHost = system: modules: nixpkgs.lib.nixosSystem { inherit system modules; - specialArgs = { inherit impermanence nixos-hardware; }; + specialArgs = { inherit impermanence nixos-hardware spicetify-nix; }; }; mkPiImage = modules: (nixpkgs.lib.nixosSystem { @@ -31,6 +32,7 @@ ./modules/common.nix ./modules/desktop-common.nix ./hosts/desktop/configuration.nix + spicetify-nix.nixosModules.spicetify home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; @@ -47,13 +49,14 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.k3t = ./home/desktop.nix; + home-manager.users.k3t = ./home/htpc.nix; } ]; "T14" = mkHost "x86_64-linux" [ ./modules/common.nix ./modules/desktop-common.nix ./hosts/laptop/configuration.nix + spicetify-nix.nixosModules.spicetify home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; diff --git a/home/cfg/gtk.nix b/home/cfg/gtk.nix index 4c2b2f3..9d0fe3e 100644 --- a/home/cfg/gtk.nix +++ b/home/cfg/gtk.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: { +{ config, pkgs, ... }: { gtk = { enable = true; colorScheme = "dark"; @@ -17,6 +17,7 @@ gtk4 = { enable = true; colorScheme = "dark"; + theme = config.gtk.theme; }; }; } \ No newline at end of file diff --git a/home/cfg/sway.nix b/home/cfg/sway.nix new file mode 100644 index 0000000..41ebbb8 --- /dev/null +++ b/home/cfg/sway.nix @@ -0,0 +1,14 @@ +{ + wayland.windowManager.sway = { + enable = true; + config = rec { + modifier = "Mod4"; + # Use kitty as default terminal + terminal = "kitty"; + #startup = [ + # # Launch Firefox on start + # {command = "firefox";} + #]; + }; + }; +} \ No newline at end of file diff --git a/home/htpc.nix b/home/htpc.nix new file mode 100644 index 0000000..a0cc125 --- /dev/null +++ b/home/htpc.nix @@ -0,0 +1,53 @@ + +let + kodi-with-addons = pkgs.kodi-wayland.withPackages (kodiPkgs: with kodiPkgs; [ + inputstream-adaptive + inputstream-ffmpegdirect + inputstream-rtmp + inputstreamhelper + bluetooth-manager + vfs-sftp + vfs-rar + vfs-libarchive + urllib3 + upnext + trakt + trakt-module + sponsorblock + invidious + simplecache + libretro + libretro-snes9x + libretro-nestopia + jellycon + archive_tool + joystick + keymap + osmc-skin + jellyfin + visualization-projectm + visualization-goom + visualization-fishbmc + visualization-matrix + ]); +in + +{ + imports = [ + ./common.nix + ./cfg/kitty.nix + ./cfg/gtk.nix + ]; + wayland.windowManager.sway = { + enable = true; + config = rec { + modifier = "Mod4"; + # Use kitty as default terminal + terminal = "kitty"; + startup = [ + # Launch Firefox on start + {command = "${kodi-with-addons}/bin/kodi-standalone";} + ]; + }; + }; +} \ No newline at end of file diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index 4728049..4b24628 100755 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -32,6 +32,7 @@ nicotine-plus lutris prismlauncher + rpcs3 winetricks ]; }; diff --git a/hosts/pi-htpc/configuration.nix b/hosts/pi-htpc/configuration.nix index 7a15499..7b3c923 100755 --- a/hosts/pi-htpc/configuration.nix +++ b/hosts/pi-htpc/configuration.nix @@ -30,67 +30,95 @@ let visualization-goom visualization-fishbmc visualization-matrix - visualization-pictureit - visualization-shadertoy - visualization-spectrum - visualization-starburst - visualization-waveform ]); in { networking.hostName = "htpc"; - # hdmi cec + environment.systemPackages = with pkgs; [ + grim + slurp + wl-clipboard + mako + # hdmi cec + libcec + ]; nixpkgs.overlays = [ (self: super: { libcec = super.libcec.override { withLibraspberrypi = true; }; }) ]; - environment.systemPackages = with pkgs; [ - libcec - ]; + services.udev.extraRules = '' # allow access to raspi cec device for video group (and optionally register it as a systemd device, used below) KERNEL=="vchiq", GROUP="video", MODE="0660", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/dev/vchiq" ''; - systemd.sockets."cec-client" = { - after = [ "dev-vchiq.device" ]; - bindsTo = [ "dev-vchiq.device" ]; - wantedBy = [ "sockets.target" ]; - socketConfig = { - ListenFIFO = "/run/cec.fifo"; - SocketGroup = "video"; - SocketMode = "0660"; - }; - }; - systemd.services."cec-client" = { - after = [ "dev-vchiq.device" ]; - bindsTo = [ "dev-vchiq.device" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - ExecStart = ''${pkgs.libcec}/bin/cec-client -d 1''; - ExecStop = ''/bin/sh -c "echo q > /run/cec.fifo"''; - StandardInput = "socket"; - StandardOutput = "journal"; - Restart="no"; - }; - }; + #systemd.sockets."cec-client" = { + # after = [ "dev-vchiq.device" ]; + # bindsTo = [ "dev-vchiq.device" ]; + # wantedBy = [ "sockets.target" ]; + # socketConfig = { + # ListenFIFO = "/run/cec.fifo"; + # SocketGroup = "video"; + # SocketMode = "0660"; + # }; + #}; + #systemd.services."cec-client" = { + # after = [ "dev-vchiq.device" ]; + # bindsTo = [ "dev-vchiq.device" ]; + # wantedBy = [ "multi-user.target" ]; + # serviceConfig = { + # ExecStart = ''${pkgs.libcec}/bin/cec-client -d 1''; + # ExecStop = ''/bin/sh -c "echo q > /run/cec.fifo"''; + # StandardInput = "socket"; + # StandardOutput = "journal"; + # Restart="no"; + # }; + #}; # kde connect for remote ctrl programs.kdeconnect.enable = true; - # kodi wayland - #services.cage.user = "k3t"; - #services.cage.extraArguments = [ "-d" "-s" ]; - #services.cage.program = "${kodi-with-addons}/bin/kodi-standalone"; - #services.cage.enable = true; + # kodi wayland v1 + ##services.cage.user = "k3t"; + ##services.cage.extraArguments = [ "-d" "-s" ]; + ##services.cage.program = "${kodi-with-addons}/bin/kodi-standalone"; + ##services.cage.enable = true; # kodi x11 - services.xserver.enable = true; - services.xserver.desktopManager.kodi.enable = true; - services.xserver.desktopManager.kodi.package = kodi-with-addons; - services.xserver.displayManager.lightdm.greeter.enable = false; - services.displayManager.autoLogin.user = "k3t"; + ##services.xserver.enable = true; + ##services.xserver.desktopManager.kodi.enable = true; + ##services.xserver.desktopManager.kodi.package = kodi-with-addons; + ##services.xserver.displayManager.lightdm.greeter.enable = false; + ##services.displayManager.autoLogin.user = "k3t"; + # kodi wayland, v2 + security.pam.loginLimits = [ + { domain = "@users"; item = "rtprio"; type = "-"; value = 1; } + ]; + services.displayManager = { + sddm = { + enable = true; + wayland.enable = true; + }; + autoLogin = { + enable = true; + user = "k3t"; # Replace with the desired user + }; + }; + + programs.sway = { + enable = true; + wrapperFeatures.gtk = true; + }; + + # kanshi systemd service + systemd.user.services.kanshi = { + description = "kanshi daemon"; + serviceConfig = { + Type = "simple"; + ExecStart = ''${pkgs.kanshi}/bin/kanshi -c kanshi_config_file''; + }; + }; # audio security.rtkit.enable = true; diff --git a/modules/common.nix b/modules/common.nix index d24f929..0e5f8f1 100755 --- a/modules/common.nix +++ b/modules/common.nix @@ -57,6 +57,9 @@ zramSwap.enable = true; zramSwap.memoryPercent = 80; + # security + security.polkit.enable = true; + users.users.k3t = { description = "Kai Moore"; isNormalUser = true; diff --git a/modules/desktop-common.nix b/modules/desktop-common.nix index c1c7257..6e28365 100755 --- a/modules/desktop-common.nix +++ b/modules/desktop-common.nix @@ -1,4 +1,10 @@ -{ pkgs, lib, ... }: { +{ pkgs, lib, spicetify-nix,... }: + +let + spicePkgs = spicetify-nix.legacyPackages.${pkgs.stdenv.system}; +in + +{ # Bootloader boot.loader.systemd-boot.enable = true; @@ -207,10 +213,33 @@ ]; }; + programs.spicetify = { + enable = true; + + enabledExtensions = with spicePkgs.extensions; [ + adblock + hidePodcasts + shuffle # shuffle+ (special characters are sanitized out of extension names) + ]; + enabledCustomApps = with spicePkgs.apps; [ + newReleases + ncsVisualizer + ]; + enabledSnippets = with spicePkgs.snippets; [ + rotatingCoverart + pointer + ]; + + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + }; + security.pam.services.k3t.kwallet.enable = true; security.pam.services.k3t.kwallet.forceRun = true; users.users.k3t = { packages = with pkgs; [ + fcast-client + fcast-receiver joplin-desktop qbittorrent kdePackages.kate @@ -218,7 +247,6 @@ flatpak vscode.fhs signal-desktop - spotify easyeffects pulseaudio kdePackages.kwallet