├── .sops.yaml ├── LICENSE ├── README.md ├── assets ├── icons │ └── neovim.svg └── wallpapers │ ├── berserk-catppuccin.png │ ├── idolGoro.jpg │ ├── mark-of-sacrifice-vertical.png │ ├── strawHats.png │ ├── vergilCatppuccin.png │ └── y0lock.png ├── builders ├── buildmachines.nix └── default.nix ├── disko.nix ├── flake.lock ├── flake.nix ├── machines ├── BigShell │ ├── configuration.nix │ ├── default.nix │ └── hardware-configuration.nix ├── ShadowMoses │ ├── configuration.nix │ ├── default.nix │ └── hardware-configuration.nix ├── Tanker │ ├── configuration.nix │ ├── default.nix │ └── hardware-configuration.nix ├── default.nix └── jd │ ├── configuration.nix │ ├── default.nix │ └── hardware-configuration.nix ├── modules ├── core │ ├── boot │ │ ├── bootloader.nix │ │ ├── default.nix │ │ └── kernel.nix │ ├── default.nix │ ├── gui │ │ ├── alvr.nix │ │ ├── anime-games.nix │ │ ├── blueman.nix │ │ ├── cosmic-greeter.nix │ │ ├── cosmic.nix │ │ ├── default.nix │ │ ├── droidcam.nix │ │ ├── gnome.nix │ │ ├── hyprland.nix │ │ ├── kde6.nix │ │ ├── opengl.nix │ │ ├── sddm.nix │ │ ├── steam.nix │ │ └── sway.nix │ ├── other │ │ ├── dconf.nix │ │ ├── default.nix │ │ ├── env-vars.nix │ │ ├── impermanence.nix │ │ ├── jovian.nix │ │ ├── locales.nix │ │ ├── nix-ld.nix │ │ ├── nix.nix │ │ ├── nixpkgs.nix │ │ ├── polkit.nix │ │ ├── security.nix │ │ ├── users.nix │ │ ├── virtualization.nix │ │ └── xdg.nix │ ├── packages │ │ ├── default.nix │ │ ├── packages.nix │ │ └── pkgcustom │ │ │ └── nohang │ │ │ └── default.nix │ ├── services │ │ ├── bluetooth.nix │ │ ├── davfs2.nix │ │ ├── default.nix │ │ ├── dns.nix │ │ ├── firewall.nix │ │ ├── fwupd.nix │ │ ├── gnome-keyring.nix │ │ ├── gnome-sushi.nix │ │ ├── gvfs.nix │ │ ├── joycond.nix │ │ ├── kdeconnect.nix │ │ ├── localsend.nix │ │ ├── mullvad-vpn.nix │ │ ├── noisetorch.nix │ │ ├── openrazer.nix │ │ ├── openssh.nix │ │ ├── polkit.nix │ │ ├── printing.nix │ │ ├── ratbagd.nix │ │ ├── searx.nix │ │ ├── sound.nix │ │ ├── tailscale │ │ │ ├── default.nix │ │ │ ├── limit-ipv4-cgnat.patch │ │ │ └── no-all-route.patch │ │ ├── udev.nix │ │ ├── unused │ │ │ └── mysql.nix │ │ ├── webdav.nix │ │ ├── xserver.nix │ │ └── zapret.nix │ └── tui │ │ ├── default.nix │ │ ├── keymap.nix │ │ ├── networkmanager.nix │ │ └── tmux.nix ├── default.nix └── home-manager │ ├── default.nix │ ├── gui │ ├── browser │ │ ├── default.nix │ │ ├── stylusStyles │ │ │ └── youtubemusic.user.css │ │ ├── theme.nix │ │ ├── userChrome.css │ │ ├── userContent.css │ │ └── zen.nix │ ├── default.nix │ ├── discord.nix │ ├── fastfetch │ │ ├── config.jsonc │ │ └── default.nix │ ├── gzdoom.nix │ ├── heroic │ │ ├── catppuccin-frappe.css │ │ └── default.nix │ ├── kde-conf.nix │ ├── lutris.nix │ ├── mpv.nix │ ├── nwg-panel │ │ ├── common-settings.json │ │ ├── config │ │ ├── executors │ │ │ ├── airplane_mode.py │ │ │ ├── arch_updates.py │ │ │ ├── au.sh │ │ │ ├── check-notifications │ │ │ └── github.sh │ │ ├── icons_color │ │ │ ├── exclamation.svg │ │ │ ├── ow-01d.svg │ │ │ ├── ow-01n.svg │ │ │ ├── ow-02d.svg │ │ │ ├── ow-02n.svg │ │ │ ├── ow-03d.svg │ │ │ ├── ow-03n.svg │ │ │ ├── ow-04d.svg │ │ │ ├── ow-04n.svg │ │ │ ├── ow-09d.svg │ │ │ ├── ow-09n.svg │ │ │ ├── ow-10d.svg │ │ │ ├── ow-10n.svg │ │ │ ├── ow-11d.svg │ │ │ ├── ow-11n.svg │ │ │ ├── ow-13d.svg │ │ │ ├── ow-13n.svg │ │ │ ├── ow-50d.svg │ │ │ └── ow-50n.svg │ │ ├── icons_dark │ │ │ ├── airplane-mode-symbolic.svg │ │ │ ├── arch-linux.svg │ │ │ ├── arch-notification.svg │ │ │ ├── audio-volume-high-symbolic.svg │ │ │ ├── audio-volume-low-symbolic.svg │ │ │ ├── audio-volume-medium-symbolic.svg │ │ │ ├── audio-volume-muted-symbolic.svg │ │ │ ├── azote.svg │ │ │ ├── battery-empty-charging-symbolic.svg │ │ │ ├── battery-empty-symbolic.svg │ │ │ ├── battery-full-charging-symbolic.svg │ │ │ ├── battery-full-symbolic.svg │ │ │ ├── battery-good-charging-symbolic.svg │ │ │ ├── battery-good-symbolic.svg │ │ │ ├── battery-low-charging-symbolic.svg │ │ │ ├── battery-low-symbolic.svg │ │ │ ├── bell.svg │ │ │ ├── blank.svg │ │ │ ├── cloud.svg │ │ │ ├── display-brightness-high-symbolic.svg │ │ │ ├── display-brightness-low-symbolic.svg │ │ │ ├── display-brightness-medium-symbolic.svg │ │ │ ├── document-open-symbolic.svg │ │ │ ├── edit-clear.svg │ │ │ ├── edit-delete-symbolic.svg │ │ │ ├── emblem-system-symbolic.svg │ │ │ ├── exclamation.svg │ │ │ ├── eye.svg │ │ │ ├── github.svg │ │ │ ├── go-down-symbolic.svg │ │ │ ├── go-next-symbolic.svg │ │ │ ├── grid.svg │ │ │ ├── gtk-apply.svg │ │ │ ├── gtk-close.svg │ │ │ ├── humidity.svg │ │ │ ├── icon-theme.cache │ │ │ ├── list-add-symbolic.svg │ │ │ ├── measure.svg │ │ │ ├── media-playback-pause-symbolic.svg │ │ │ ├── media-playback-start-symbolic.svg │ │ │ ├── media-skip-backward-symbolic.svg │ │ │ ├── media-skip-forward-symbolic.svg │ │ │ ├── mode.svg │ │ │ ├── music.svg │ │ │ ├── nwg-clipman.svg │ │ │ ├── nwg-displays.svg │ │ │ ├── nwg-look.svg │ │ │ ├── nwg-panel.svg │ │ │ ├── nwg-processes.svg │ │ │ ├── nwg-readme-browser.svg │ │ │ ├── nwg-shell-config.svg │ │ │ ├── nwg-shell.svg │ │ │ ├── nwgocc-symbolic.svg │ │ │ ├── ow-01d.svg │ │ │ ├── ow-01n.svg │ │ │ ├── ow-02d.svg │ │ │ ├── ow-02n.svg │ │ │ ├── ow-03d.svg │ │ │ ├── ow-03n.svg │ │ │ ├── ow-04d.svg │ │ │ ├── ow-04n.svg │ │ │ ├── ow-09d.svg │ │ │ ├── ow-09n.svg │ │ │ ├── ow-10d.svg │ │ │ ├── ow-10n.svg │ │ │ ├── ow-11d.svg │ │ │ ├── ow-11n.svg │ │ │ ├── ow-13d.svg │ │ │ ├── ow-13n.svg │ │ │ ├── ow-50d.svg │ │ │ ├── ow-50n.svg │ │ │ ├── pan-down-symbolic.svg │ │ │ ├── pan-end-symbolic.svg │ │ │ ├── pressure.svg │ │ │ ├── sunrise.svg │ │ │ ├── sunset.svg │ │ │ ├── system-lock-screen.svg │ │ │ ├── system-shutdown-symbolic.svg │ │ │ ├── umbrella.svg │ │ │ ├── user-available-symbolic.svg │ │ │ ├── view-dual-symbolic.svg │ │ │ ├── view-paged-symbolic.svg │ │ │ ├── view-refresh-symbolic.svg │ │ │ ├── wallpaper-refresh.svg │ │ │ ├── wallpaper.svg │ │ │ ├── wind.svg │ │ │ ├── window-close-symbolic.svg │ │ │ └── window-pop-out-symbolic.svg │ │ ├── icons_light │ │ │ ├── airplane-mode-symbolic.svg │ │ │ ├── arch-linux.svg │ │ │ ├── arch-notification.svg │ │ │ ├── audio-volume-high-symbolic.svg │ │ │ ├── audio-volume-low-symbolic.svg │ │ │ ├── audio-volume-medium-symbolic.svg │ │ │ ├── audio-volume-muted-symbolic.svg │ │ │ ├── azote.svg │ │ │ ├── battery-empty-charging-symbolic.svg │ │ │ ├── battery-empty-symbolic.svg │ │ │ ├── battery-full-charging-symbolic.svg │ │ │ ├── battery-full-symbolic.svg │ │ │ ├── battery-good-charging-symbolic.svg │ │ │ ├── battery-good-symbolic.svg │ │ │ ├── battery-low-charging-symbolic.svg │ │ │ ├── battery-low-symbolic.svg │ │ │ ├── bell.svg │ │ │ ├── blank.svg │ │ │ ├── cloud.svg │ │ │ ├── display-brightness-high-symbolic.svg │ │ │ ├── display-brightness-low-symbolic.svg │ │ │ ├── display-brightness-medium-symbolic.svg │ │ │ ├── document-open-symbolic.svg │ │ │ ├── edit-clear.svg │ │ │ ├── edit-delete-symbolic.svg │ │ │ ├── emblem-system-symbolic.svg │ │ │ ├── exclamation.svg │ │ │ ├── eye.svg │ │ │ ├── github.svg │ │ │ ├── go-down-symbolic.svg │ │ │ ├── go-next-symbolic.svg │ │ │ ├── grid.svg │ │ │ ├── gtk-apply.svg │ │ │ ├── gtk-close.svg │ │ │ ├── humidity.svg │ │ │ ├── icon-missing.svg │ │ │ ├── icon-theme.cache │ │ │ ├── list-add-symbolic.svg │ │ │ ├── measure.svg │ │ │ ├── media-playback-pause-symbolic.svg │ │ │ ├── media-playback-start-symbolic.svg │ │ │ ├── media-skip-backward-symbolic.svg │ │ │ ├── media-skip-forward-symbolic.svg │ │ │ ├── mode.svg │ │ │ ├── music.svg │ │ │ ├── nwg-clipman.svg │ │ │ ├── nwg-displays.svg │ │ │ ├── nwg-look.svg │ │ │ ├── nwg-panel.svg │ │ │ ├── nwg-processes.svg │ │ │ ├── nwg-readme-browser.svg │ │ │ ├── nwg-shell-config.svg │ │ │ ├── nwg-shell.svg │ │ │ ├── nwgocc-symbolic.svg │ │ │ ├── ow-01d.svg │ │ │ ├── ow-01n.svg │ │ │ ├── ow-02d.svg │ │ │ ├── ow-02n.svg │ │ │ ├── ow-03d.svg │ │ │ ├── ow-03n.svg │ │ │ ├── ow-04d.svg │ │ │ ├── ow-04n.svg │ │ │ ├── ow-09d.svg │ │ │ ├── ow-09n.svg │ │ │ ├── ow-10d.svg │ │ │ ├── ow-10n.svg │ │ │ ├── ow-11d.svg │ │ │ ├── ow-11n.svg │ │ │ ├── ow-13d.svg │ │ │ ├── ow-13n.svg │ │ │ ├── ow-50d.svg │ │ │ ├── ow-50n.svg │ │ │ ├── pan-down-symbolic.svg │ │ │ ├── pan-end-symbolic.svg │ │ │ ├── pressure.svg │ │ │ ├── sunrise.svg │ │ │ ├── sunset.svg │ │ │ ├── system-lock-screen.svg │ │ │ ├── system-shutdown-symbolic.svg │ │ │ ├── umbrella.svg │ │ │ ├── user-available-symbolic.svg │ │ │ ├── view-dual-symbolic.svg │ │ │ ├── view-paged-symbolic.svg │ │ │ ├── view-refresh-symbolic.svg │ │ │ ├── wallpaper-refresh.svg │ │ │ ├── wallpaper.svg │ │ │ ├── wind.svg │ │ │ ├── window-close-symbolic.svg │ │ │ └── window-pop-out-symbolic.svg │ │ └── style.css │ ├── obs │ │ ├── default.nix │ │ ├── obs.nix │ │ └── theme.nix │ ├── obsidian.nix │ ├── prism-launcher.nix │ ├── qt │ │ ├── Catppuccin-Frappe.conf │ │ ├── default.nix │ │ ├── qt5ct.nix │ │ └── qt6ct.nix │ ├── signal.nix │ ├── unused │ │ ├── ags │ │ │ ├── config │ │ │ │ ├── README.md │ │ │ │ ├── config.js │ │ │ │ ├── modules │ │ │ │ │ ├── bar.ts │ │ │ │ │ └── overview │ │ │ │ │ │ ├── actions.js │ │ │ │ │ │ ├── main.js │ │ │ │ │ │ ├── miscfunctions.js │ │ │ │ │ │ ├── overview_hyprland.js │ │ │ │ │ │ ├── searchbuttons.js │ │ │ │ │ │ ├── searchitem.js │ │ │ │ │ │ └── windowcontent.js │ │ │ │ ├── style.css │ │ │ │ └── tsconfig.json │ │ │ └── default.nix │ │ ├── alacritty.nix │ │ ├── anyrun.nix │ │ ├── flameshot.nix │ │ ├── ghostty.nix │ │ ├── hyprland-conf.nix │ │ ├── hyprlock.nix │ │ ├── kitty.nix │ │ ├── spicetify.nix │ │ ├── sway.nix │ │ ├── swaync │ │ │ ├── config.json │ │ │ ├── default.nix │ │ │ └── style.css │ │ ├── waybar │ │ │ ├── config │ │ │ ├── default.nix │ │ │ ├── modules │ │ │ └── style.css │ │ └── wlogout │ │ │ ├── default.nix │ │ │ └── layout │ ├── virt-manager.nix │ ├── wezterm.nix │ └── zed.nix │ ├── other │ ├── default.nix │ ├── home.nix │ ├── mimetypes.nix │ ├── nixpkgs.nix │ └── xdg.nix │ ├── packages │ ├── default.nix │ ├── packages.nix │ └── pkgcustom │ │ ├── davinci-resolve │ │ └── default.nix │ │ ├── fdm │ │ └── default.nix │ │ ├── gpu-screen-recorder-gtk │ │ └── default.nix │ │ ├── lime3ds │ │ └── default.nix │ │ ├── mcpelauncher │ │ └── default.nix │ │ ├── nook-desktop │ │ └── default.nix │ │ ├── pdiary │ │ └── default.nix │ │ ├── sgdboop │ │ └── default.nix │ │ ├── video-downloader │ │ └── default.nix │ │ └── vinegar │ │ ├── default.nix │ │ └── patches │ │ └── segregrevert.mypatch │ ├── services │ ├── default.nix │ ├── hypridle.nix │ └── swayosd.nix │ └── tui │ ├── default.nix │ ├── neovim.nix │ ├── nushell.nix │ ├── pdiary.nix │ ├── vinegar.nix │ ├── yazi.nix │ └── zsh.nix ├── secrets ├── default.nix └── secrets.yaml └── server ├── cloudflare.nix ├── default.nix ├── home-assistant.nix ├── jellyfin.nix ├── nextcloud.nix ├── nitter.nix ├── palworld.nix ├── parrot.nix ├── playit.nix ├── tailscale.nix └── vaultwarden.nix /.sops.yaml: -------------------------------------------------------------------------------- 1 | # .sops.yaml 2 | 3 | keys: 4 | - &primary age1wgmeter89mp5pap3gh7ds4p2j7e3e20ue6m9yrptrxdudk3dqf0sreqxpx 5 | creation_rules: 6 | - path_regex: secrets/secrets.yaml$ 7 | key_groups: 8 | - age: 9 | - *primary 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 Sam Hocevar 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | -------------------------------------------------------------------------------- /assets/icons/neovim.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | neovim-mark@2x 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /assets/wallpapers/berserk-catppuccin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ardishko/OuterHeaven/b3883f67e9b4641728c843947de49f5b8f8e3dc1/assets/wallpapers/berserk-catppuccin.png -------------------------------------------------------------------------------- /assets/wallpapers/idolGoro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ardishko/OuterHeaven/b3883f67e9b4641728c843947de49f5b8f8e3dc1/assets/wallpapers/idolGoro.jpg -------------------------------------------------------------------------------- /assets/wallpapers/mark-of-sacrifice-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ardishko/OuterHeaven/b3883f67e9b4641728c843947de49f5b8f8e3dc1/assets/wallpapers/mark-of-sacrifice-vertical.png -------------------------------------------------------------------------------- /assets/wallpapers/strawHats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ardishko/OuterHeaven/b3883f67e9b4641728c843947de49f5b8f8e3dc1/assets/wallpapers/strawHats.png -------------------------------------------------------------------------------- /assets/wallpapers/vergilCatppuccin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ardishko/OuterHeaven/b3883f67e9b4641728c843947de49f5b8f8e3dc1/assets/wallpapers/vergilCatppuccin.png -------------------------------------------------------------------------------- /assets/wallpapers/y0lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ardishko/OuterHeaven/b3883f67e9b4641728c843947de49f5b8f8e3dc1/assets/wallpapers/y0lock.png -------------------------------------------------------------------------------- /builders/buildmachines.nix: -------------------------------------------------------------------------------- 1 | { 2 | nix = { 3 | buildMachines = [ 4 | { 5 | hostName = "vagahbond.com"; 6 | sshUser = "vagahbond"; 7 | system = "x86_64-linux"; 8 | protocol = "ssh-ng"; 9 | maxJobs = 4; 10 | speedFactor = 2; 11 | supportedFeatures = [ 12 | "nixos-test" 13 | "benchmark" 14 | "big-parallel" 15 | "kvm" 16 | ]; 17 | mandatoryFeatures = [ ]; 18 | } 19 | ]; 20 | distributedBuilds = true; 21 | extraOptions = '' 22 | builders-use-substitutes = true 23 | ''; 24 | }; 25 | environment = { 26 | sessionVariables = { 27 | NIX_SSHOPTS = "-p 45 -t -i /home/vaporsnake/.ssh/vagahbond.pub"; 28 | }; 29 | # billions must use different ssh ports 30 | variables = { 31 | NIX_SSHOPTS = "-p 45 -t -i /home/vaporsnake/.ssh/vagahbond.pub"; 32 | }; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /builders/default.nix: -------------------------------------------------------------------------------- 1 | { imports = [ ./buildmachines.nix ]; } 2 | -------------------------------------------------------------------------------- /machines/BigShell/configuration.nix: -------------------------------------------------------------------------------- 1 | # Edit this configuration file to define what should be installed on 2 | # your system. Help is available in the configuration.nix(5) man page 3 | # and in the NixOS manual (accessible by running ‘nixos-help’). 4 | 5 | { pkgs, username, ... }: 6 | { 7 | # Define your hostname. 8 | networking.hostName = "BigShell"; 9 | networking.hostId = "5d8fad81"; # required for zfs 10 | 11 | # Enable touchpad support (enabled default in most desktopManager). 12 | services.libinput.enable = true; 13 | 14 | # Define a user account. Don't forget to set a password by creating an encrypted file at the relevant location. 15 | # users.users.${username} = { 16 | # isNormalUser = true; 17 | # description = "${username}"; 18 | # extraGroups = [ 19 | # "networkmanager" 20 | # "wheel" 21 | # ]; 22 | # packages = [ ]; 23 | # shell = pkgs.nushell; 24 | # }; 25 | 26 | # This value determines the NixOS release from which the default 27 | # settings for stateful data, like file locations and database versions 28 | # on your system were taken. It‘s perfectly fine and recommended to leave 29 | # this value at the release version of the first install of this system. 30 | # Before changing this value read the documentation for this option 31 | # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 32 | system.stateVersion = "23.05"; # Did you read the comment? 33 | 34 | services = { 35 | power-profiles-daemon.enable = true; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /machines/BigShell/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./configuration.nix 4 | ./hardware-configuration.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /machines/BigShell/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | # Do not modify this file! It was generated by ‘nixos-generate-config’ 2 | # and may be overwritten by future invocations. Please make changes 3 | # to /etc/nixos/configuration.nix instead. 4 | { 5 | config, 6 | lib, 7 | modulesPath, 8 | ... 9 | }: 10 | 11 | { 12 | imports = [ 13 | (modulesPath + "/installer/scan/not-detected.nix") 14 | ]; 15 | 16 | boot = { 17 | initrd = { 18 | availableKernelModules = [ 19 | "nvme" 20 | "xhci_pci" 21 | "thunderbolt" 22 | "usb_storage" 23 | "usbhid" 24 | "sd_mod" 25 | ]; 26 | kernelModules = [ "amdgpu" ]; 27 | }; 28 | kernelModules = [ "kvm-amd" ]; 29 | extraModulePackages = [ ]; 30 | kernelParams = [ "mem_sleep_default=deep" ]; 31 | }; 32 | 33 | services.xserver.videoDrivers = [ "amdgpu" ]; 34 | 35 | swapDevices = [ ]; 36 | 37 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 38 | # (the default) this is the recommended approach. When using systemd-networkd it's 39 | # still possible to use this option, but it's recommended to use it in conjunction 40 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`. 41 | networking.useDHCP = lib.mkDefault true; 42 | 43 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 44 | hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 45 | } 46 | -------------------------------------------------------------------------------- /machines/ShadowMoses/configuration.nix: -------------------------------------------------------------------------------- 1 | # Edit this configuration file to define what should be installed on 2 | # your system. Help is available in the configuration.nix(5) man page 3 | # and in the NixOS manual (accessible by running ‘nixos-help’). 4 | { pkgs, ... }: 5 | { 6 | # Define your hostname. 7 | networking.hostName = "ShadowMoses"; 8 | networking.hostId = "69fbbf79"; 9 | 10 | # Define a user account. Don't forget to set a password with ‘passwd’. 11 | # users.users.vaporsnake = { 12 | # isNormalUser = true; 13 | # description = "vaporsnake"; 14 | # extraGroups = [ 15 | # "networkmanager" 16 | # "wheel" 17 | # ]; 18 | # packages = [ ]; 19 | # shell = pkgs.zsh; 20 | # ignoreShellProgramCheck = true; 21 | # }; 22 | 23 | # This value determines the NixOS release from which the default 24 | # settings for stateful data, like file locations and database versions 25 | # on your system were taken. It‘s perfectly fine and recommended to leave 26 | # this value at the release version of the first install of this system. 27 | # Before changing this value read the documentation for this option 28 | # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 29 | system.stateVersion = "23.05"; # Did you read the comment? 30 | 31 | # This is necesery because many programs hard-code the path to hip 32 | systemd.tmpfiles.rules = [ "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}" ]; 33 | } 34 | -------------------------------------------------------------------------------- /machines/ShadowMoses/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./configuration.nix 4 | ./hardware-configuration.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /machines/ShadowMoses/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | { 2 | config, 3 | lib, 4 | modulesPath, 5 | ... 6 | }: 7 | { 8 | imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; 9 | services.xserver.videoDrivers = [ "amdgpu" ]; 10 | 11 | boot = { 12 | extraModulePackages = [ ]; 13 | supportedFilesystems = [ "ntfs" ]; 14 | kernelModules = [ "kvm-intel" ]; 15 | initrd = { 16 | availableKernelModules = [ 17 | "vmd" 18 | "xhci_pci" 19 | "ahci" 20 | "nvme" 21 | "usbhid" 22 | "usb_storage" 23 | "sd_mod" 24 | ]; 25 | kernelModules = [ "amdgpu" ]; 26 | }; 27 | }; 28 | 29 | #fileSystems."/" = { 30 | # device = "/dev/disk/by-uuid/12f4f756-dfdb-40fd-8ed7-cf710e8cff28"; 31 | # fsType = "ext4"; 32 | #}; 33 | #fileSystems."/boot" = { 34 | # device = "/dev/disk/by-uuid/93FD-AE0A"; 35 | # fsType = "vfat"; 36 | #}; 37 | 38 | # External drives 39 | 40 | fileSystems."/disks/EEEEEEEEEEE" = { 41 | device = "/dev/disk/by-uuid/bd44ffbb-b994-4b47-b5a2-eea71704cfbf"; 42 | fsType = "ext4"; 43 | }; 44 | fileSystems."/disks/1TBCP" = { 45 | device = "/dev/disk/by-uuid/cee53a9e-310e-4ead-bde1-cb8ef6badc87"; 46 | fsType = "ext4"; 47 | }; 48 | 49 | swapDevices = [ ]; 50 | 51 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 52 | # (the default) this is the recommended approach. When using systemd-networkd it's 53 | # still possible to use this option, but it's recommended to use it in conjunction 54 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`. 55 | networking.useDHCP = lib.mkDefault true; 56 | # networking.interfaces.enp7s0.useDHCP = lib.mkDefault true; 57 | # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; 58 | 59 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 60 | hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 61 | } 62 | -------------------------------------------------------------------------------- /machines/Tanker/configuration.nix: -------------------------------------------------------------------------------- 1 | # Edit this configuration file to define what should be installed on 2 | # your system. Help is available in the configuration.nix(5) man page 3 | # and in the NixOS manual (accessible by running ‘nixos-help’). 4 | 5 | { pkgs, username, ... }: 6 | { 7 | # Define your hostname. 8 | networking.hostName = "Tanker"; 9 | networking.hostId = "6a260131"; # required for zfs 10 | 11 | # Enable touchpad support (enabled default in most desktopManager). 12 | services.xserver.libinput.enable = true; 13 | 14 | # Define a user account. Don't forget to set a password with ‘passwd’. 15 | # users.users.${username} = { 16 | # isNormalUser = true; 17 | # description = "${username}"; 18 | # extraGroups = [ 19 | # "networkmanager" 20 | # "wheel" 21 | # ]; 22 | # packages = [ ]; 23 | # shell = pkgs.nushell; 24 | # }; 25 | 26 | # This value determines the NixOS release from which the default 27 | # settings for stateful data, like file locations and database versions 28 | # on your system were taken. It‘s perfectly fine and recommended to leave 29 | # this value at the release version of the first install of this system. 30 | # Before changing this value read the documentation for this option 31 | # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 32 | system.stateVersion = "23.05"; # Did you read the comment? 33 | } 34 | -------------------------------------------------------------------------------- /machines/Tanker/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./configuration.nix 4 | ./hardware-configuration.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /machines/Tanker/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | { lib, modulesPath, ... }: 2 | 3 | { 4 | imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; 5 | 6 | boot.initrd.availableKernelModules = [ 7 | "nvme" 8 | "xhci_pci" 9 | "usb_storage" 10 | "sd_mod" 11 | "sdhci_pci" 12 | ]; 13 | boot.initrd.kernelModules = [ ]; 14 | boot.kernelModules = [ "kvm-amd" ]; 15 | boot.extraModulePackages = [ ]; 16 | 17 | swapDevices = [ ]; 18 | 19 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 20 | # (the default) this is the recommended approach. When using systemd-networkd it's 21 | # still possible to use this option, but it's recommended to use it in conjunction 22 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`. 23 | networking.useDHCP = lib.mkDefault true; 24 | 25 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 26 | } 27 | -------------------------------------------------------------------------------- /machines/default.nix: -------------------------------------------------------------------------------- 1 | { imports = [ ./ShadowMoses ]; } 2 | -------------------------------------------------------------------------------- /machines/jd/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./configuration.nix 4 | ./hardware-configuration.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /machines/jd/hardware-configuration.nix: -------------------------------------------------------------------------------- 1 | # Do not modify this file! It was generated by ‘nixos-generate-config’ 2 | # and may be overwritten by future invocations. Please make changes 3 | # to /etc/nixos/configuration.nix instead. 4 | { 5 | config, 6 | lib, 7 | modulesPath, 8 | ... 9 | }: 10 | 11 | { 12 | imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; 13 | 14 | boot.initrd.availableKernelModules = [ 15 | "xhci_pci" 16 | "nvme" 17 | "usb_storage" 18 | "sd_mod" 19 | ]; 20 | boot.initrd.kernelModules = [ ]; 21 | boot.kernelModules = [ "kvm-intel" ]; 22 | boot.extraModulePackages = [ ]; 23 | 24 | # fileSystems."/" = 25 | # { device = "/dev/disk/by-uuid/448a796e-cd85-4be1-95cc-806517bf787f"; 26 | # fsType = "ext4"; 27 | # }; 28 | # 29 | # fileSystems."/boot" = 30 | # { device = "/dev/disk/by-uuid/45C5-076F"; 31 | # fsType = "vfat"; 32 | # }; 33 | 34 | swapDevices = [ ]; 35 | 36 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 37 | # (the default) this is the recommended approach. When using systemd-networkd it's 38 | # still possible to use this option, but it's recommended to use it in conjunction 39 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`. 40 | networking.useDHCP = lib.mkDefault true; 41 | # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; 42 | # networking.interfaces.wlp58s0.useDHCP = lib.mkDefault true; 43 | 44 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 45 | powerManagement.cpuFreqGovernor = lib.mkDefault "performance"; 46 | hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 47 | } 48 | -------------------------------------------------------------------------------- /modules/core/boot/bootloader.nix: -------------------------------------------------------------------------------- 1 | { inputs, config, ... }: 2 | let 3 | resolution = 4 | if (config.networking.hostName == "ShadowMoses") then 5 | "2560x1440" 6 | else if (config.networking.hostName == "BigShell") then 7 | "1920x1200" 8 | else if (config.networking.hostName == "Tanker") then 9 | "1280x800" 10 | else 11 | "1920x1080"; 12 | in 13 | { 14 | imports = [ inputs.minegrub-theme.nixosModules.default ]; 15 | boot = { 16 | loader = { 17 | grub = { 18 | enable = true; 19 | efiSupport = true; 20 | useOSProber = true; 21 | devices = [ "nodev" ]; 22 | gfxmodeEfi = "${resolution}"; 23 | minegrub-theme = { 24 | enable = true; 25 | splash = "Also try Ultrakill!"; 26 | background = "background_options/1.8 - [Classic Minecraft].png"; 27 | boot-options-count = 4; 28 | }; 29 | }; 30 | systemd-boot.enable = false; 31 | efi = { 32 | canTouchEfiVariables = true; 33 | }; 34 | }; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /modules/core/boot/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./bootloader.nix 4 | ./kernel.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/core/boot/kernel.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | hostname, 4 | config, 5 | lib, 6 | ... 7 | }: 8 | { 9 | boot = { 10 | initrd.verbose = false; 11 | consoleLogLevel = 1; 12 | kernelParams = [ 13 | "split_lock_detect=off" 14 | "quiet" 15 | ]; 16 | # kernelParams = [ ]; 17 | extraModulePackages = 18 | with config.boot.kernelPackages; 19 | (lib.lists.optionals (hostname == "ShadowMoses") [ 20 | xpadneo 21 | usbip 22 | ]); 23 | kernelPackages = 24 | if (hostname == "Tanker") then 25 | pkgs.linuxPackages_jovian 26 | else if (hostname == "jd") then 27 | pkgs.linuxPackages_hardened 28 | else 29 | pkgs.linuxPackages; 30 | supportedFilesystems = [ 31 | "ntfs" 32 | "zfs" 33 | ]; 34 | kernelModules = [ 35 | "udev" 36 | "xpadneo" 37 | "hid-nintendo" 38 | ]; 39 | }; 40 | hardware.uinput.enable = true; 41 | } 42 | -------------------------------------------------------------------------------- /modules/core/default.nix: -------------------------------------------------------------------------------- 1 | { hostname, ... }: 2 | { 3 | imports = 4 | if (hostname == "jd") then 5 | [ 6 | ./services/firewall.nix 7 | ./other/impermanence.nix 8 | ./services/openssh.nix 9 | ./tui/keymap.nix 10 | ./gui/hyprland.nix 11 | ./boot 12 | ] 13 | else 14 | [ 15 | ./boot 16 | ./gui 17 | ./other 18 | ./packages 19 | ./services 20 | ./tui 21 | ]; 22 | } 23 | -------------------------------------------------------------------------------- /modules/core/gui/alvr.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs.alvr = { 3 | enable = true; 4 | openFirewall = true; 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /modules/core/gui/anime-games.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | { 3 | imports = [ inputs.anime-games.nixosModules.default ]; 4 | programs = { 5 | anime-games-launcher.enable = true; 6 | sleepy-launcher.enable = true; 7 | }; 8 | nix.settings = inputs.anime-games.nixConfig; 9 | 10 | # what the fuck is this nixos module this is horrible 11 | } 12 | -------------------------------------------------------------------------------- /modules/core/gui/blueman.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | blueman.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/gui/cosmic-greeter.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | { 3 | imports = [ inputs.nixos-cosmic.nixosModules.default ]; 4 | services.displayManager.cosmic-greeter.enable = true; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/gui/cosmic.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | { 3 | imports = [ inputs.nixos-cosmic.nixosModules.default ]; 4 | 5 | services.desktopManager.cosmic.enable = true; 6 | environment.cosmic.excludePackages = [ 7 | pkgs.cosmic-term 8 | pkgs.cosmic-edit 9 | pkgs.cosmic-files 10 | pkgs.cosmic-store 11 | ]; 12 | } 13 | -------------------------------------------------------------------------------- /modules/core/gui/default.nix: -------------------------------------------------------------------------------- 1 | { lib, hostname, ... }: 2 | { 3 | imports = 4 | [ 5 | ./alvr.nix 6 | ./anime-games.nix 7 | ./droidcam.nix 8 | ./opengl.nix 9 | ./steam.nix 10 | ./blueman.nix 11 | ] 12 | ++ (lib.lists.optionals (hostname == "ShadowMoses" || hostname == "BigShell") [ 13 | # ./hyprland.nix 14 | ./sddm.nix 15 | ./kde6.nix 16 | ]) 17 | ++ (lib.lists.optionals (hostname == "Tanker") [ ./kde6.nix ]); 18 | } 19 | -------------------------------------------------------------------------------- /modules/core/gui/droidcam.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs = { 3 | droidcam = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/gui/gnome.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.xserver.desktopManager.gnome = { 3 | enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/gui/hyprland.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | { 3 | programs.hyprland = { 4 | enable = true; # enabling this for hyprland to have a desktop entry for it to appear on my display manager (sddm) 5 | portalPackage = pkgs.xdg-desktop-portal-hyprland; 6 | package = pkgs.hyprland; 7 | withUWSM = true; # somehow makes it so that the desktop entry for Hyprland aren't duplicated 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /modules/core/gui/kde6.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | services.desktopManager.plasma6 = { 4 | enable = true; 5 | enableQt5Integration = false; 6 | notoPackage = pkgs.nerd-fonts.iosevka; 7 | }; 8 | environment.plasma6.excludePackages = with pkgs.kdePackages; [ 9 | plasma-browser-integration 10 | konsole 11 | qttools # Expose qdbus in PATH 12 | ark 13 | elisa 14 | gwenview 15 | okular 16 | kate 17 | khelpcenter 18 | dolphin 19 | baloo-widgets # baloo information in Dolphin 20 | dolphin-plugins 21 | spectacle 22 | ffmpegthumbs 23 | xwaylandvideobridge 24 | discover 25 | kwallet 26 | kwallet-pam 27 | kwalletmanager 28 | kde-gtk-config 29 | plasma-integration 30 | libplasma 31 | frameworkintegration 32 | kauth 33 | phonon-vlc 34 | kdeplasma-addons 35 | ]; 36 | security.pam.services = { 37 | login.kwallet = { 38 | enable = lib.mkForce false; 39 | }; 40 | kde = { 41 | allowNullPassword = true; 42 | kwallet = { 43 | enable = lib.mkForce false; 44 | }; 45 | }; 46 | }; 47 | } 48 | -------------------------------------------------------------------------------- /modules/core/gui/opengl.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | hardware = { 4 | graphics = { 5 | enable = true; 6 | enable32Bit = true; 7 | extraPackages = with pkgs; [ 8 | # rocmPackages_5.clr.icd 9 | # rocmPackages_5.clr 10 | # rocmPackages_5.rocminfo 11 | # rocmPackages_5.rocm-runtime 12 | ]; 13 | }; 14 | amdgpu = { 15 | opencl = { 16 | enable = true; 17 | }; 18 | initrd = { 19 | enable = true; 20 | }; 21 | }; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /modules/core/gui/sddm.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | services = { 4 | displayManager = { 5 | sddm = { 6 | enable = true; 7 | theme = "catppuccin-frappe"; 8 | package = lib.mkForce pkgs.kdePackages.sddm; 9 | }; 10 | }; 11 | xserver = { 12 | displayManager = { 13 | lightdm.enable = false; 14 | }; 15 | }; 16 | }; 17 | environment.systemPackages = [ 18 | (pkgs.catppuccin-sddm.override { 19 | flavor = "frappe"; 20 | font = "Iosevka Nerd Font"; 21 | fontSize = "15"; 22 | background = "${../../../assets/wallpapers/idolGoro.jpg}"; 23 | loginBackground = true; 24 | }) 25 | ]; 26 | } 27 | -------------------------------------------------------------------------------- /modules/core/gui/steam.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | { 3 | imports = [ inputs.nix-gaming.nixosModules.platformOptimizations ]; 4 | programs = { 5 | steam = { 6 | enable = true; 7 | remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play 8 | dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server 9 | gamescopeSession.enable = true; 10 | platformOptimizations.enable = true; 11 | extraCompatPackages = with pkgs; [ proton-ge-bin ]; 12 | }; 13 | }; 14 | nixpkgs = { 15 | config = { 16 | allowUnfree = true; 17 | packageOverrides = pkgs: { 18 | steam = pkgs.steam.override { 19 | extraPkgs = 20 | pkgs: with pkgs; [ 21 | xorg.libXcursor 22 | xorg.libXi 23 | xorg.libXinerama 24 | xorg.libXScrnSaver 25 | libpng 26 | libpulseaudio 27 | libvorbis 28 | stdenv.cc.cc.lib 29 | libkrb5 30 | keyutils 31 | ]; 32 | }; 33 | # .overrideAttrs (old: { 34 | # desktopItems = [ 35 | # (pkgs.makeDesktopItem { 36 | # name = "steam"; 37 | # desktopName = "Steam (mullvad-exclude)"; 38 | # exec = "mullvad-exclude steam"; 39 | # icon = "steam"; 40 | # }) 41 | # ]; 42 | # }); 43 | # the custom desktop entry is in modules/home-manager/xdg.nix 44 | }; 45 | }; 46 | }; 47 | nixpkgs.overlays = [ 48 | (_final: prev: { 49 | steam = prev.steam.override ( 50 | { 51 | extraLibraries ? _pkgs': [ ], 52 | ... 53 | }: 54 | { 55 | extraLibraries = pkgs': (extraLibraries pkgs') ++ [ pkgs'.gperftools ]; 56 | } 57 | ); 58 | }) 59 | ]; 60 | } 61 | -------------------------------------------------------------------------------- /modules/core/gui/sway.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs = { 3 | sway = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/other/dconf.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs = { 3 | dconf = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/other/default.nix: -------------------------------------------------------------------------------- 1 | { lib, hostname, ... }: 2 | { 3 | imports = [ 4 | ./dconf.nix 5 | ./env-vars.nix 6 | ./nix.nix 7 | ./nixpkgs.nix 8 | ./polkit.nix 9 | ./xdg.nix 10 | ./impermanence.nix 11 | ./security.nix 12 | ./virtualization.nix 13 | ./locales.nix 14 | ./users.nix 15 | # ./byedpi 16 | ] ++ (lib.lists.optionals (hostname == "Tanker") [ ./jovian.nix ]); 17 | } 18 | -------------------------------------------------------------------------------- /modules/core/other/env-vars.nix: -------------------------------------------------------------------------------- 1 | { config, userName, ... }: 2 | let 3 | userName = 4 | if (config.networking.hostName == "ShadowMoses") then 5 | "vaporsnake" 6 | else if (config.networking.hostName == "BigShell") then 7 | "liquid" 8 | else if (config.networking.hostName == "Tanker") then 9 | "raiden" 10 | else if (config.networking.hostName == "jd") then 11 | "snake" 12 | else 13 | "user"; 14 | in 15 | { 16 | environment.sessionVariables = { 17 | _JAVA_AWT_WM_NONREPARENTING = "1"; 18 | WLR_NO_HARDWARE_CURSORS = "1"; 19 | GTK_THEME = "${config.home-manager.users.${userName}.gtk.theme.name}"; 20 | MOZ_ENABLE_WAYLAND = "1"; 21 | RUST_BACKTRACE = "1"; 22 | QT_QPA_PLATFORMTHEME = "${config.home-manager.users.${userName}.qt.platformTheme.name}"; 23 | EDITOR = "nvim"; 24 | XCURSOR_THEME = "${config.home-manager.users.${userName}.home.pointerCursor.name}"; 25 | XCURSOR_SIZE = config.home-manager.users.${userName}.home.pointerCursor.size; 26 | NIXOS_OZONE_WL = 1; 27 | WLR_DRM_NO_ATOMIC = 0; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /modules/core/other/jovian.nix: -------------------------------------------------------------------------------- 1 | { inputs, username, ... }: 2 | { 3 | imports = [ inputs.jovian-nixos.nixosModules.default ]; 4 | # Jovian NixOS options, specific to the deck 5 | jovian = { 6 | steam = { 7 | enable = true; 8 | autoStart = true; 9 | user = "${username}"; 10 | desktopSession = "plasma"; 11 | }; 12 | devices = { 13 | steamdeck = { 14 | enable = true; 15 | enableGyroDsuService = true; 16 | }; 17 | }; 18 | decky-loader = { 19 | enable = true; 20 | user = "${username}"; 21 | stateDir = "/var/lib/decky-loader"; 22 | }; 23 | steamos = { 24 | useSteamOSConfig = true; 25 | }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /modules/core/other/locales.nix: -------------------------------------------------------------------------------- 1 | { 2 | # Set your time zone. 3 | time.timeZone = "Europe/Riga"; 4 | 5 | # Select internationalisation properties 6 | 7 | i18n = { 8 | defaultLocale = "en_US.UTF-8"; 9 | extraLocaleSettings = { 10 | LANGUAGE = "en_US.UTF-8"; 11 | LC_ADDRESS = "en_US.UTF-8"; 12 | LC_IDENTIFICATION = "en_US.UTF-8"; 13 | LC_MEASUREMENT = "tr_TR.UTF-8"; 14 | LC_MONETARY = "lv_LV.UTF-8"; 15 | LC_NAME = "en_US.UTF-8"; 16 | LC_NUMERIC = "en_US.UTF-8"; 17 | LC_PAPER = "en_US.UTF-8"; 18 | LC_TELEPHONE = "lv_LV.UTF-8"; 19 | LC_TIME = "en_US.UTF-8"; 20 | }; 21 | supportedLocales = [ 22 | "en_US.UTF-8/UTF-8" 23 | "lv_LV.UTF-8/UTF-8" 24 | "tr_TR.UTF-8/UTF-8" 25 | ]; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /modules/core/other/nix-ld.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs.nix-ld = { 3 | enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/other/nix.nix: -------------------------------------------------------------------------------- 1 | { 2 | nix = { 3 | settings = { 4 | experimental-features = [ 5 | "nix-command" 6 | "flakes" 7 | ]; 8 | builders-use-substitutes = true; 9 | # substituters to use 10 | substituters = [ 11 | "https://anyrun.cachix.org" 12 | "https://hyprland.cachix.org" 13 | "https://ezkea.cachix.org" 14 | "https://cache.nixos.org/" 15 | "https://nix-community.cachix.org" 16 | "https://cosmic.cachix.org/" 17 | "https://chaotic-nyx.cachix.org/" 18 | "https://nix-gaming.cachix.org" 19 | ]; 20 | 21 | trusted-public-keys = [ 22 | "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" 23 | "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" 24 | "ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI=" 25 | "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" 26 | "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" 27 | "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" 28 | "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" 29 | "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" 30 | ]; 31 | auto-optimise-store = true; 32 | }; 33 | optimise = { 34 | automatic = true; 35 | }; 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /modules/core/other/nixpkgs.nix: -------------------------------------------------------------------------------- 1 | { 2 | nixpkgs = { 3 | config = { 4 | allowUnfree = true; 5 | permittedInsecurePackages = [ "electron-19.1.9" ]; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/core/other/polkit.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | # Polkit stuff 4 | security = { 5 | polkit = { 6 | enable = true; 7 | extraConfig = '' 8 | /* Grant access to /dev/dri/card0 for gsr-kms-server */ 9 | polkit.addRule(function(action, subject) { 10 | if (action.id == "org.freedesktop.policykit.exec" && 11 | action.lookup("program") == "${pkgs.gpu-screen-recorder}/bin/gsr-kms-server") { 12 | if (subject.local && subject.active && subject.isInGroup("video")) { 13 | return polkit.Result.YES; 14 | } 15 | } 16 | }); 17 | polkit.addRule(function(action, subject) { 18 | if (action.id == "org.freedesktop.policykit.exec" && 19 | action.lookup("program") == "${pkgs.gpu-screen-recorder-gtk}/bin/gsr-kms-server") { 20 | if (subject.local && subject.active && subject.isInGroup("video")) { 21 | return polkit.Result.YES; 22 | } 23 | } 24 | }); 25 | ''; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/core/other/security.nix: -------------------------------------------------------------------------------- 1 | { 2 | # Polkit stuff 3 | security = { 4 | pam.services = { 5 | swaylock.text = "auth include login"; 6 | gtklock.text = "auth include login"; 7 | }; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /modules/core/other/users.nix: -------------------------------------------------------------------------------- 1 | { pkgs, config, ... }: 2 | let 3 | userName = 4 | if (config.networking.hostName == "ShadowMoses") then 5 | "vaporsnake" 6 | else if (config.networking.hostName == "BigShell") then 7 | "liquid" 8 | else if (config.networking.hostName == "Tanker") then 9 | "raiden" 10 | else if (config.networking.hostName == "jd") then 11 | "snake" 12 | else 13 | "user"; 14 | in 15 | { 16 | # Define a user account. Don't forget to set a password by creating an encrypted file at the relevant location. 17 | users.users.${userName} = { 18 | isNormalUser = true; 19 | description = "${userName}"; 20 | extraGroups = [ 21 | "networkmanager" 22 | "wheel" 23 | ]; 24 | shell = pkgs.zsh; 25 | ignoreShellProgramCheck = true; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /modules/core/other/virtualization.nix: -------------------------------------------------------------------------------- 1 | { 2 | virtualisation = { 3 | libvirtd.enable = true; 4 | waydroid.enable = true; 5 | podman.enable = true; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/other/xdg.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | { 3 | # It looks lonely here... Maybe one day I'll put something here. 4 | # Someday. 5 | xdg.portal = { 6 | enable = true; 7 | wlr = lib.mkForce { enable = false; }; 8 | extraPortals = with pkgs; [ 9 | kdePackages.xdg-desktop-portal-kde 10 | xdg-desktop-portal-gtk 11 | ]; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/core/packages/default.nix: -------------------------------------------------------------------------------- 1 | { imports = [ ./packages.nix ]; } 2 | -------------------------------------------------------------------------------- /modules/core/packages/packages.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | config, 5 | ... 6 | }: 7 | { 8 | environment.systemPackages = 9 | with pkgs; 10 | [ 11 | bash 12 | gamescope 13 | lshw 14 | f3d 15 | polychromatic 16 | ] 17 | ++ (lib.lists.optionals (config.networking.hostName == "ShadowMoses") [ 18 | # davinci-resolve 19 | ]) 20 | ++ (lib.lists.optionals (config.networking.hostName == "Tanker") [ 21 | steamdeck-firmware 22 | jupiter-dock-updater-bin 23 | ]); 24 | services.flatpak.enable = true; 25 | fonts.packages = with pkgs; [ 26 | noto-fonts 27 | noto-fonts-cjk-sans 28 | noto-fonts-emoji 29 | liberation_ttf 30 | fira-code 31 | fira-code-symbols 32 | mplus-outline-fonts.githubRelease 33 | dina-font 34 | proggyfonts 35 | nerd-fonts.iosevka 36 | nerd-fonts.iosevka-term 37 | ]; 38 | } 39 | -------------------------------------------------------------------------------- /modules/core/packages/pkgcustom/nohang/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | fetchFromGitHub, 5 | cmake, 6 | }: 7 | 8 | stdenv.mkDerivation rec { 9 | pname = "nohang"; 10 | version = "0.2.0"; 11 | 12 | src = fetchFromGitHub { 13 | owner = "hakavlad"; 14 | repo = "nohang"; 15 | rev = "v${version}"; 16 | hash = "sha256-aRiBGnJHdtQ5euvJ4DSuCZO5i5OJVRiCesaatrIARmg="; 17 | }; 18 | buildInputs = [ cmake ]; 19 | installPhase = '' 20 | mkdir -p "$out" 21 | mkdir -p "$out/usr" 22 | mkdir -p "$out/usr/local" 23 | mkdir -p "$out/usr/local/sbin" 24 | make install 25 | ''; 26 | meta = with lib; { 27 | description = "A sophisticated low memory handler for Linux"; 28 | homepage = "https://github.com/hakavlad/nohang"; 29 | changelog = "https://github.com/hakavlad/nohang/blob/${src.rev}/CHANGELOG.md"; 30 | license = licenses.mit; 31 | maintainers = with maintainers; [ ]; 32 | mainProgram = "nohang"; 33 | platforms = platforms.all; 34 | }; 35 | } 36 | -------------------------------------------------------------------------------- /modules/core/services/bluetooth.nix: -------------------------------------------------------------------------------- 1 | { 2 | hardware = { 3 | bluetooth = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/services/davfs2.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | davfs2 = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/services/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./bluetooth.nix 4 | ./davfs2.nix 5 | ./dns.nix 6 | ./firewall.nix 7 | ./gnome-keyring.nix 8 | ./gnome-sushi.nix 9 | ./gvfs.nix 10 | ./kdeconnect.nix 11 | ./localsend.nix 12 | ./joycond.nix 13 | ./tailscale 14 | ./mullvad-vpn.nix 15 | # ./mysql.nix 16 | ./noisetorch.nix 17 | ./openrazer.nix 18 | ./openssh.nix 19 | ./printing.nix 20 | ./ratbagd.nix 21 | # ./searx.nix 22 | ./sound.nix 23 | ./udev.nix 24 | ./webdav.nix 25 | ./xserver.nix 26 | ./zapret.nix 27 | ./polkit.nix 28 | ./fwupd.nix 29 | ]; 30 | } 31 | -------------------------------------------------------------------------------- /modules/core/services/dns.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | networking = { 4 | nameservers = [ 5 | "127.0.0.1" 6 | "::1" 7 | ]; 8 | # resolvconf.enable = pkgs.lib.mkForce false; 9 | dhcpcd.extraConfig = "nohook resolv.conf"; 10 | networkmanager.dns = "none"; 11 | }; 12 | services.resolved.enable = false; 13 | services.dnscrypt-proxy2 = { 14 | enable = true; 15 | settings = { 16 | ipv6_servers = true; 17 | require_dnssec = true; 18 | 19 | sources.public-resolvers = { 20 | urls = [ 21 | "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md" 22 | "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md" 23 | ]; 24 | cache_file = "/var/lib/dnscrypt-proxy2/public-resolvers.md"; 25 | minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3"; 26 | }; 27 | 28 | server_names = [ "adguard-dns-doh" ]; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /modules/core/services/firewall.nix: -------------------------------------------------------------------------------- 1 | { hostname, ... }: 2 | { 3 | networking = 4 | if (hostname == "jd") then 5 | { 6 | firewall = { 7 | enable = true; 8 | allowedTCPPorts = [ 9 | 22 10 | 80 11 | 443 12 | 8211 13 | 8096 14 | 8080 15 | 8222 16 | 8000 17 | 25565 18 | ]; 19 | allowedUDPPorts = [ 20 | 22 21 | 80 22 | 443 23 | 8211 24 | 8096 25 | 8080 26 | 8222 27 | 8000 28 | 25565 29 | ]; 30 | }; 31 | networkmanager.enable = true; 32 | } 33 | else 34 | { 35 | firewall = { 36 | enable = true; 37 | allowedTCPPorts = [ 38 | 21 39 | 22 40 | 443 41 | 8080 42 | 3131 43 | ]; 44 | allowedUDPPorts = [ 45 | 21 46 | 22 47 | 443 48 | 8080 49 | 3131 50 | ]; 51 | }; 52 | # Enable networking 53 | networkmanager.enable = true; 54 | }; 55 | } 56 | -------------------------------------------------------------------------------- /modules/core/services/fwupd.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.fwupd.enable = true; 3 | 4 | } 5 | -------------------------------------------------------------------------------- /modules/core/services/gnome-keyring.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | gnome.gnome-keyring.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/services/gnome-sushi.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | gnome.sushi.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/services/gvfs.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | gvfs.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/services/joycond.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | joycond = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/services/kdeconnect.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs = { 3 | kdeconnect = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/services/localsend.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs.localsend = { 3 | enable = true; 4 | openFirewall = true; 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /modules/core/services/mullvad-vpn.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | mullvad-vpn.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/services/noisetorch.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs = { 3 | noisetorch = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/services/openrazer.nix: -------------------------------------------------------------------------------- 1 | { 2 | hardware.openrazer = { 3 | enable = true; 4 | batteryNotifier = { 5 | enable = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/core/services/openssh.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | openssh = { 4 | enable = true; 5 | allowSFTP = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/core/services/polkit.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | security.soteria = { 4 | enable = true; 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /modules/core/services/printing.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | printing.enable = true; 4 | avahi = { 5 | enable = true; 6 | nssmdns4 = true; 7 | publish = { 8 | enable = true; 9 | addresses = true; 10 | }; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/core/services/ratbagd.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | ratbagd.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/services/searx.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | searx = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/services/sound.nix: -------------------------------------------------------------------------------- 1 | { pkgs, inputs, ... }: 2 | { 3 | imports = [ inputs.nix-gaming.nixosModules.pipewireLowLatency ]; 4 | # sound.enable = true; 5 | services.pulseaudio.enable = false; 6 | security.rtkit.enable = true; 7 | services.pipewire = { 8 | enable = true; 9 | wireplumber = { 10 | enable = true; 11 | extraConfig = { 12 | disable-autoswitch = { 13 | "wireplumber.settings" = { 14 | "bluetooth.autoswitch-to-headset-profile" = "false"; 15 | }; 16 | }; 17 | }; 18 | }; 19 | jack.enable = true; 20 | alsa.enable = true; 21 | alsa.support32Bit = true; 22 | pulse.enable = true; 23 | extraLv2Packages = with pkgs; [ 24 | lsp-plugins 25 | rnnoise-plugin 26 | ]; 27 | # use the example session manager (no others are packaged yet so this is enabled by default, 28 | # no need to redefine it in your config for now) 29 | #media-session.enable = true; 30 | lowLatency = { 31 | enable = true; 32 | quantum = 80; 33 | rate = 50000; 34 | }; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /modules/core/services/tailscale/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | # services.tailscale = { 4 | # enable = true; 5 | # } 6 | # Fix for Tailscale + Mullvad, allows all Tailscale-related traffic 7 | # to bypass VPN tunnel. See here for details: 8 | # https://mullvad.net/en/help/split-tunneling-with-linux-advanced 9 | # https://github.com/r3nor/mullvad-tailscale/blob/main/mullvad.rules 10 | # networking.nftables.tables.mullvad-tailscale = { 11 | # family = "inet"; 12 | # content = '' 13 | # chain excludeOutgoing { 14 | # type route hook output priority 0; policy accept; 15 | # ip daddr 100.69.0.0/16 ct mark set 0x00000f41 meta mark set 0x6d6f6c65; 16 | # ip6 daddr fd7a:115c:a1e0::/48 ct mark set 0x00000f41 meta mark set 0x6d6f6c65; 17 | # } 18 | # 19 | # chain excludeDns { 20 | # type filter hook output priority -10; policy accept; 21 | # ip daddr 100.100.100.100 udp dport 53 ct mark set 0x00000f41 meta mark set 0x6d6f6c65; 22 | # } 23 | # 24 | # chain allowIncoming { 25 | # type filter hook input priority -100; policy accept; 26 | # iifname "tailscale0" ct mark set 0x00000f41 meta mark set 0x6d6f6c65; 27 | # } 28 | # ''; 29 | # }; 30 | 31 | # Exclude Tailscale from Mullvad tunnel 32 | # systemd.services.mullvad-excluded-tailscale = { 33 | # wantedBy = ["multi-user.target"]; 34 | # after = ["mullvad-daemon.service"]; 35 | # script = "${pkgs.mullvad}/bin/mullvad-exclude ${pkgs.tailscale}/bin/tailscaled"; 36 | # }; 37 | } 38 | -------------------------------------------------------------------------------- /modules/core/services/tailscale/limit-ipv4-cgnat.patch: -------------------------------------------------------------------------------- 1 | diff --git a/net/tsaddr/tsaddr.go b/net/tsaddr/tsaddr.go 2 | index 93a720b0..f89c68b5 100644 3 | --- a/net/tsaddr/tsaddr.go 4 | +++ b/net/tsaddr/tsaddr.go 5 | @@ -31,7 +31,7 @@ func ChromeOSVMRange() netip.Prefix { 6 | // See https://tailscale.com/s/cgnat 7 | // Note that Tailscale does not assign out of the ChromeOSVMRange. 8 | func CGNATRange() netip.Prefix { 9 | - cgnatRange.Do(func() { mustPrefix(&cgnatRange.v, "100.64.0.0/10") }) 10 | + cgnatRange.Do(func() { mustPrefix(&cgnatRange.v, "100.69.0.0/16") }) 11 | return cgnatRange.v 12 | } 13 | 14 | -------------------------------------------------------------------------------- /modules/core/services/tailscale/no-all-route.patch: -------------------------------------------------------------------------------- 1 | diff --git a/net/dns/resolved.go b/net/dns/resolved.go 2 | index 2917ab5b..449b3858 100644 3 | --- a/net/dns/resolved.go 4 | +++ b/net/dns/resolved.go 5 | @@ -300,14 +300,6 @@ func (m *resolvedManager) setConfigOverDBus(ctx context.Context, rManager dbus.B 6 | RoutingOnly: true, 7 | }) 8 | } 9 | - if len(config.MatchDomains) == 0 && len(config.Nameservers) > 0 { 10 | - // Caller requested full DNS interception, install a 11 | - // routing-only root domain. 12 | - linkDomains = append(linkDomains, resolvedLinkDomain{ 13 | - Domain: ".", 14 | - RoutingOnly: true, 15 | - }) 16 | - } 17 | 18 | err = rManager.CallWithContext( 19 | ctx, dbusResolvedInterface+".SetLinkDomains", 0, 20 | -------------------------------------------------------------------------------- /modules/core/services/udev.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | services = { 4 | udev = { 5 | packages = with pkgs; [ 6 | game-devices-udev-rules 7 | ]; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/core/services/unused/mysql.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | services = { 4 | mysql = { 5 | enable = true; 6 | package = pkgs.mysql80; 7 | }; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /modules/core/services/webdav.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | webdav.enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /modules/core/services/xserver.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | # Enable the X11 windowing system. 4 | services = { 5 | xserver = { 6 | enable = true; 7 | xkb = { 8 | variant = ""; 9 | layout = "tr"; 10 | }; 11 | excludePackages = [ pkgs.xterm ]; 12 | displayManager.lightdm.enable = false; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /modules/core/services/zapret.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.zapret = { 3 | enable = true; 4 | params = [ 5 | "--dpi-desync=split2 --dpi-desync-ttl=5 --wssize 1:6 --dpi-desync-fooling=md5sig" 6 | "--dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-repeats=6" 7 | ]; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /modules/core/tui/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./networkmanager.nix 4 | ./keymap.nix 5 | ./tmux.nix 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/core/tui/keymap.nix: -------------------------------------------------------------------------------- 1 | { 2 | # Configure console keymap 3 | console.keyMap = "trq"; 4 | } 5 | -------------------------------------------------------------------------------- /modules/core/tui/networkmanager.nix: -------------------------------------------------------------------------------- 1 | { 2 | networking = { 3 | networkmanager = { 4 | enable = true; 5 | }; 6 | }; 7 | systemd = { 8 | services.NetworkManager-wait-online.enable = false; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/core/tui/tmux.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs = { 3 | tmux = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs, 3 | outputs, 4 | username, 5 | hostname, 6 | ... 7 | }: 8 | { 9 | imports = [ 10 | ./core 11 | inputs.home-manager.nixosModules.home-manager 12 | ]; 13 | home-manager = { 14 | extraSpecialArgs = { 15 | inherit 16 | inputs 17 | outputs 18 | username 19 | hostname 20 | ; 21 | }; 22 | useGlobalPkgs = false; 23 | useUserPackages = true; 24 | users = { 25 | # Import your home-manager configuration 26 | ${username} = import ./home-manager; 27 | }; 28 | backupFileExtension = "backup"; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /modules/home-manager/default.nix: -------------------------------------------------------------------------------- 1 | { hostname, ... }: 2 | { 3 | imports = 4 | if (hostname == "jd") then 5 | [ 6 | ./tui/nushell.nix 7 | ./packages/packages.nix 8 | ] 9 | else 10 | [ 11 | ./gui 12 | ./other 13 | ./packages 14 | ./services 15 | ./tui 16 | # ./schizofox.nix 17 | # wtf raf 18 | ]; 19 | home.stateVersion = "23.05"; 20 | programs.home-manager.enable = true; 21 | } 22 | -------------------------------------------------------------------------------- /modules/home-manager/gui/browser/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./zen.nix 4 | ]; 5 | } 6 | -------------------------------------------------------------------------------- /modules/home-manager/gui/browser/stylusStyles/youtubemusic.user.css: -------------------------------------------------------------------------------- 1 | /*==UserStyle== 2 | @name Youtube Music Catppuccin 3 | @namespace github.com/catppuccin/youtubemusic 4 | @version 0.4.1 5 | @description Soothing pastel theme for Youtube Music 6 | @author Catppuccin 7 | @updateURL https://raw.githubusercontent.com/catppuccin/youtubemusic/main/src/youtubemusic.user.css 8 | @preprocessor less 9 | 10 | @var select lightFlavor "Light Flavor" ["latte:Latte*", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha"] 11 | @var select darkFlavor "Dark Flavor" ["latte:Latte", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha*"] 12 | @var select accentColor "Accent" ["rosewater:Rosewater", "flamingo:Flamingo", "pink:Pink", "mauve:Mauve", "red:Red", "maroon:Maroon", "peach:Peach", "yellow:Yellow", "green:Green", "teal:Teal", "blue:Blue", "sapphire:Sapphire*", "sky:Sky", "lavender:Lavender", "subtext0:Gray"] 13 | ==/UserStyle== */ 14 | 15 | @-moz-document domain("music.youtube.com") { 16 | @import (css) url("https://youtubemusic.catppuccin.com/src/@{lightFlavor}.css") (prefers-color-scheme: light); 17 | @import (css) url("https://youtubemusic.catppuccin.com/src/@{darkFlavor}.css") (prefers-color-scheme: dark); 18 | 19 | html:not(.style-scope) { 20 | @accent: "--ctp-@{accentColor}"; 21 | --ctp-accent: var(e(@accent)) !important; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /modules/home-manager/gui/browser/theme.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | name, 4 | theme, 5 | }: 6 | let 7 | json = builtins.toJSON { 8 | manifest_version = 2; 9 | version = "1.0"; 10 | browser_specific_settings.gecko = { 11 | id = "theme-${name}@outfoxxed.me"; 12 | }; 13 | 14 | inherit name theme; 15 | }; 16 | 17 | jsonFile = pkgs.writeTextFile { 18 | name = "manifest.json"; 19 | text = json; 20 | }; 21 | in 22 | pkgs.stdenvNoCC.mkDerivation { 23 | pname = "firefox-theme-${name}.xpi"; 24 | version = "1.0"; 25 | preferLocalBuild = true; 26 | unpackPhase = "true"; 27 | 28 | buildPhase = '' 29 | cp ${jsonFile} manifest.json 30 | ${pkgs.zip}/bin/zip out.xpi manifest.json 31 | ''; 32 | 33 | installPhase = '' 34 | mv out.xpi $out 35 | ''; 36 | } 37 | -------------------------------------------------------------------------------- /modules/home-manager/gui/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | # ./ags 4 | # ./anyrun.nix 5 | ./browser 6 | # ./discord-canary.nix 7 | ./discord.nix 8 | # ./flameshot.nix 9 | ./gzdoom.nix 10 | ./heroic 11 | # ./hyprland-conf.nix 12 | # ./hyprlock.nix 13 | ./kde-conf.nix 14 | # ./kitty.nix 15 | ./wezterm.nix 16 | ./lutris.nix 17 | ./mpv.nix 18 | ./obs 19 | ./obsidian.nix 20 | ./prism-launcher.nix 21 | ./qt 22 | # ./spicetify.nix 23 | # ./swaync 24 | ./virt-manager.nix 25 | # ./waybar 26 | # ./wlogout 27 | ./fastfetch 28 | ./signal.nix 29 | ./zed.nix 30 | ]; 31 | } 32 | -------------------------------------------------------------------------------- /modules/home-manager/gui/fastfetch/config.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", 3 | "modules": [ 4 | "title", 5 | "separator", 6 | "os", 7 | "host", 8 | "kernel", 9 | "uptime", 10 | "packages", 11 | "shell", 12 | "display", 13 | "de", 14 | "wm", 15 | "wmtheme", 16 | "theme", 17 | "icons", 18 | "font", 19 | "cursor", 20 | "terminal", 21 | "terminalfont", 22 | "cpu", 23 | "gpu", 24 | "memory", 25 | "swap", 26 | "break", 27 | "colors" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /modules/home-manager/gui/fastfetch/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | home.packages = with pkgs; [ fastfetch ]; 4 | xdg.configFile."fastfetch/config.jsonc".source = ./config.jsonc; 5 | } 6 | -------------------------------------------------------------------------------- /modules/home-manager/gui/gzdoom.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | home.packages = with pkgs; [ 4 | gzdoom 5 | ]; 6 | xdg = { 7 | desktopEntries = { 8 | "gzdoom" = lib.mkForce { 9 | name = "GZDoom"; 10 | type = "Application"; 11 | icon = "gzdoom"; 12 | terminal = false; 13 | exec = "env SDL_VIDEODRIVER=wayland gzdoom --alsa=pipewire"; 14 | }; 15 | }; 16 | configFile."gzdoom/gzdoom.ini".text = '' 17 | [general] 18 | drivers = alsa 19 | alsa = pipewire 20 | ''; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/home-manager/gui/heroic/catppuccin-frappe.css: -------------------------------------------------------------------------------- 1 | body.catppuccin-frappe { 2 | --accent: #8caaee; 3 | --accent-overlay: #ca9ee6; 4 | --navbar-accent: #c6d0f5; 5 | --background: #303446; 6 | --body-background: var(--background); 7 | --background-darker: var(--background); 8 | --current-background: var(--body-background); 9 | --navbar-background: #232634; 10 | --navbar-active-background: #626880; 11 | --gradient-body-background: linear-gradient( 12 | 90deg, 13 | var(--background-darker) -32px, 14 | var(--body-background) 64px, 15 | var(--body-background) 100% 16 | ); 17 | --input-background: #414559; 18 | --modal-background: var(--body-background); 19 | --modal-border: var(--accent); 20 | --success: #a6d189; 21 | --success-hover: #81c8be; 22 | --primary: #8caaee; 23 | --primary-hover: #85c1dc; 24 | --danger: #e78284; 25 | --text-log: #e5c890; 26 | --text-title: #8caaee; 27 | --text-default: #c6d0f5; 28 | --text-secondary: #a5adce; 29 | --osk-background: var(--body-background); 30 | --osk-button-background: var(--input-background); 31 | --osk-button-border: var(--navbar-background); 32 | --action-icon: var(--text-default); 33 | --action-icon-hover: var(--accent-overlay); 34 | --action-icon-active: var(--accent); 35 | } 36 | -------------------------------------------------------------------------------- /modules/home-manager/gui/heroic/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | home.packages = with pkgs; [ heroic ]; 4 | xdg.configFile."heroic/themes/catppuccin-frappe.css".source = ./catppuccin-frappe.css; 5 | } 6 | -------------------------------------------------------------------------------- /modules/home-manager/gui/lutris.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | home.packages = with pkgs; [ 4 | (pkgs.lutris.overrideAttrs { buildInputs = with pkgs; [ xorg.libXdamage ]; }) 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/home-manager/gui/mpv.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | programs.mpv = { 4 | enable = true; 5 | package = pkgs.mpv; 6 | scripts = with pkgs.mpvScripts; [ 7 | mpris 8 | seekTo 9 | webtorrent-mpv-hook 10 | # mpv-webm 11 | blacklistExtensions 12 | sponsorblock 13 | cutter 14 | convert 15 | quality-menu 16 | mpv-playlistmanager 17 | chapterskip 18 | ]; 19 | scriptOpts = { 20 | webtorrent = { 21 | path = "/tmp"; 22 | }; 23 | }; 24 | config = { 25 | save-watch-history = true; 26 | watch-later-options = "start"; 27 | save-position-on-quit = true; 28 | keen-open = true; 29 | }; 30 | }; 31 | home.packages = with pkgs; [ open-in-mpv ]; 32 | } 33 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/common-settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "restart-on-display": true, 3 | "restart-delay": 500, 4 | "processes-backgroud-only": true, 5 | "processes-own-only": true 6 | } -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/executors/airplane_mode.py: -------------------------------------------------------------------------------- 1 | #!/nix/store/px2nj16i5gc3d4mnw5l1nclfdxhry61p-python3-3.12.7/bin/python3 2 | 3 | import subprocess 4 | 5 | 6 | def get_output(cmd): 7 | try: 8 | return subprocess.check_output(cmd, shell=True).decode("utf-8").strip().splitlines() 9 | except subprocess.CalledProcessError: 10 | return "" 11 | 12 | 13 | o = get_output("rfkill list") 14 | for line in o: 15 | if "Soft blocked: yes" in line or "Hard blocked: yes" in line: 16 | print("airplane-mode-symbolic") 17 | print("") 18 | break 19 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/executors/au.sh: -------------------------------------------------------------------------------- 1 | #!/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin/bash 2 | 3 | # This is a helper to the arch-updates.py executor 4 | # Add ` -e "au.sh; swaymsg reload"` as the On left click action 5 | 6 | # Just in case - warn if battery level < threshold 7 | l=$(acpi | awk -F ',' '{print $2}') 8 | if [[ ! -z "$l" ]]; then 9 | level=${l:1:-1} 10 | threshold=30 11 | if [[ "$level" -lt "$threshold" ]]; then 12 | echo -e "\n*** BATTERY LEVEL$l, CONNECT AC! ***\n" 13 | fi 14 | fi 15 | 16 | trizen -Syu && 17 | rm /tmp/arch-updates 18 | echo Press enter to exit!; read; 19 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/executors/check-notifications: -------------------------------------------------------------------------------- 1 | #!/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin/bash 2 | 3 | a=$(swaync-client -c) 4 | 5 | if [ "$a" -gt "0" ]; then 6 | echo bell 7 | echo $a 8 | fi -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/executors/github.sh: -------------------------------------------------------------------------------- 1 | #!/nix/store/0irlcqx2n3qm6b1pc9rsd2i8qpvcccaj-bash-5.2p37/bin/bash 2 | 3 | # Based on the 'Github notifications' example from Waybar's Wiki 4 | # Depends on jq Command-line JSON processor 5 | # Obtain a notifications token at https://github.com/settings/tokens 6 | # save it to a file as below. 7 | 8 | token=`cat ${HOME}/.config/github/notifications.token` 9 | count=`curl -u nwg-piotr:${token} https://api.github.com/notifications -s | jq '. | length'` 10 | 11 | if [[ "$count" != "0" ]]; then 12 | echo /home/piotr/.config/nwg-panel/icons_light/github.svg 13 | echo $count 14 | fi 15 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_color/ow-03d.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 14 | 17 | 20 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_color/ow-03n.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 14 | 17 | 20 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_color/ow-09d.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 15 | 18 | 21 | 25 | 26 | 28 | 30 | 32 | 33 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_color/ow-09n.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 15 | 18 | 21 | 25 | 26 | 28 | 30 | 32 | 33 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/airplane-mode-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 33 | 37 | 38 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/audio-volume-high-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/audio-volume-low-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/audio-volume-medium-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/audio-volume-muted-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/blank.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 43 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/document-open-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/edit-clear.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 32 | 34 | 39 | 40 | 44 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/go-down-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/go-next-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 51 | 55 | 56 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/gtk-apply.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 32 | 34 | 39 | 40 | 44 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/gtk-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 32 | 34 | 39 | 40 | 44 | 49 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/icon-theme.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ardishko/OuterHeaven/b3883f67e9b4641728c843947de49f5b8f8e3dc1/modules/home-manager/gui/nwg-panel/icons_dark/icon-theme.cache -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/media-playback-pause-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/media-playback-start-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/media-skip-backward-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/media-skip-forward-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/mode.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 41 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/music.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 34 | 38 | 39 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/nwg-readme-browser.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 35 | 42 | 43 | 47 | 52 | 53 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/nwg-shell.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 46 | 50 | 51 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/pan-down-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 51 | 55 | 56 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/pan-end-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/sunrise.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 34 | 38 | 42 | 46 | 47 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/sunset.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 34 | 38 | 42 | 46 | 47 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/system-shutdown-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 51 | 55 | 56 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/view-dual-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/view-paged-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 58 | 59 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_dark/window-pop-out-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 55 | 60 | 61 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/airplane-mode-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 33 | 37 | 38 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/audio-volume-high-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/audio-volume-low-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/audio-volume-medium-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/audio-volume-muted-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/blank.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 36 | 38 | 42 | 43 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/document-open-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/edit-clear.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 32 | 34 | 39 | 40 | 44 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/go-down-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/go-next-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/gtk-apply.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 32 | 34 | 39 | 40 | 44 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/gtk-close.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 32 | 34 | 39 | 40 | 44 | 49 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/icon-theme.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ardishko/OuterHeaven/b3883f67e9b4641728c843947de49f5b8f8e3dc1/modules/home-manager/gui/nwg-panel/icons_light/icon-theme.cache -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/media-playback-pause-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/media-playback-start-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/media-skip-backward-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/media-skip-forward-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/mode.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 41 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/music.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 34 | 38 | 39 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/nwg-readme-browser.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 35 | 42 | 43 | 47 | 52 | 53 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/nwg-shell.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 45 | 49 | 50 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/pan-down-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/pan-end-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/sunrise.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 34 | 38 | 42 | 46 | 47 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/sunset.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 34 | 38 | 42 | 46 | 47 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/system-shutdown-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 58 | 59 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/view-dual-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/view-paged-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 58 | 59 | -------------------------------------------------------------------------------- /modules/home-manager/gui/nwg-panel/icons_light/window-pop-out-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 30 | 50 | 55 | 60 | 61 | -------------------------------------------------------------------------------- /modules/home-manager/gui/obs/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./obs.nix 4 | ./theme.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/home-manager/gui/obs/obs.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | programs = { 4 | obs-studio = { 5 | enable = true; 6 | plugins = [ 7 | pkgs.obs-studio-plugins.obs-vkcapture 8 | pkgs.obs-studio-plugins.input-overlay 9 | # pkgs.obs-studio-plugins.droidcam-obs 10 | pkgs.obs-studio-plugins.obs-vaapi 11 | pkgs.obs-studio-plugins.obs-gstreamer 12 | pkgs.obs-studio-plugins.obs-webkitgtk 13 | pkgs.obs-studio-plugins.obs-tuna 14 | # pkgs.obs-studio-plugins.obs-replay-source 15 | pkgs.obs-studio-plugins.obs-pipewire-audio-capture 16 | pkgs.obs-studio-plugins.wlrobs 17 | ]; 18 | }; 19 | }; 20 | xdg.desktopEntries = { 21 | "com.obsproject.Studio" = lib.mkForce { 22 | name = "OBS Studio"; 23 | type = "Application"; 24 | icon = "com.obsproject.Studio"; 25 | terminal = false; 26 | exec = "mullvad-exclude obs --startreplaybuffer"; 27 | }; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /modules/home-manager/gui/obsidian.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | home.packages = with pkgs; [ 4 | (pkgs.obsidian.overrideAttrs { 5 | desktopItem = [ 6 | (makeDesktopItem { 7 | name = "obsidian"; 8 | desktopName = "Obsidian"; 9 | comment = "Knowledge base"; 10 | icon = "obsidian"; 11 | exec = "obsidian --enable-features=UseOzonePlatform --ozone-platform=wayland"; 12 | categories = [ "Office" ]; 13 | mimeTypes = [ "x-scheme-handler/obsidian" ]; 14 | }) 15 | ]; 16 | }) 17 | ]; 18 | } 19 | -------------------------------------------------------------------------------- /modules/home-manager/gui/prism-launcher.nix: -------------------------------------------------------------------------------- 1 | { 2 | pkgs, 3 | lib, 4 | inputs, 5 | ... 6 | }: 7 | { 8 | home.packages = with pkgs; [ 9 | prismlauncher 10 | inputs.polly-mc.packages.${pkgs.system}.default 11 | ]; 12 | xdg.desktopEntries = { 13 | "org.prismlauncher.PrismLauncher" = lib.mkForce { 14 | name = "Turizm Launcher"; 15 | type = "Application"; 16 | icon = "org.prismlauncher.PrismLauncher"; 17 | terminal = false; 18 | exec = "mullvad-exclude prismlauncher %u"; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /modules/home-manager/gui/qt/Catppuccin-Frappe.conf: -------------------------------------------------------------------------------- 1 | [ColorScheme] 2 | active_colors=#ffc6d0f5, #ff292c3c, #ffa5adce, #ff949cbb, #ff51576d, #ff737994, #ffc6d0f5, #ffc6d0f5, #ffc6d0f5, #ff303446, #ff292c3c, #ff838ba7, #ff8caaee, #ff303446, #ff8caaee, #ffe78284, #ff303446, #ffc6d0f5, #ff232634, #ffc6d0f5, #80838ba7 3 | disabled_colors=#ffa5adce, #ff292c3c, #ffa5adce, #ff949cbb, #ff51576d, #ff737994, #ffa5adce, #ffa5adce, #ffa5adce, #ff303446, #ff292c3c, #ff838ba7, #ff626880, #ffb5bfe2, #ff8caaee, #ffe78284, #ff303446, #ffc6d0f5, #ff232634, #ffc6d0f5, #80838ba7 4 | inactive_colors=#ffc6d0f5, #ff292c3c, #ffa5adce, #ff949cbb, #ff51576d, #ff737994, #ffc6d0f5, #ffc6d0f5, #ffc6d0f5, #ff303446, #ff292c3c, #ff838ba7, #ff414559, #ffa5adcb, #ff8caaee, #ffe78284, #ff303446, #ffc6d0f5, #ff232634, #ffc6d0f5, #80838ba7 5 | -------------------------------------------------------------------------------- /modules/home-manager/gui/qt/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | qt = { 4 | enable = true; 5 | platformTheme = { 6 | name = "qt5ct"; 7 | }; 8 | style = { 9 | package = pkgs.libsForQt5.qt5ct; 10 | }; 11 | }; 12 | imports = [ 13 | ./qt5ct.nix 14 | ./qt6ct.nix 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /modules/home-manager/gui/qt/qt5ct.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | home.packages = with pkgs; [ libsForQt5.qt5ct ]; 4 | xdg.configFile."qt5ct/qt5ct.conf".text = '' 5 | [Appearance] 6 | color_scheme_path=${./Catppuccin-Frappe.conf} 7 | custom_palette=true 8 | icon_theme=Papirus-Dark 9 | standard_dialogs=default 10 | style=Breeze 11 | 12 | [Fonts] 13 | fixed="Iosevka Nerd Font,14,-1,5,57,1,0,0,0,0" 14 | general="Iosevka Nerd Font,14,-1,5,57,0,0,0,0,0" 15 | 16 | [Interface] 17 | activate_item_on_single_click=1 18 | buttonbox_layout=0 19 | cursor_flash_time=1000 20 | dialog_buttons_have_icons=1 21 | double_click_interval=400 22 | keyboard_scheme=2 23 | menus_have_icons=true 24 | show_shortcuts_in_context_menus=true 25 | stylesheets=@Invalid() 26 | toolbutton_style=4 27 | underline_shortcut=1 28 | wheel_scroll_lines=3 29 | 30 | [SettingsWindow] 31 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\x1^\0\0\x2\xdc\0\0\x6\xa4\0\0\0\0\0\0\x1^\0\0\x2\xde\0\0\x4\x83\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\x1^\0\0\x2\xdc\0\0\x6\xa4) 32 | 33 | [Troubleshooting] 34 | force_raster_widgets=1 35 | ignored_applications=@Invalid() 36 | ''; 37 | } 38 | -------------------------------------------------------------------------------- /modules/home-manager/gui/qt/qt6ct.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | home.packages = with pkgs; [ qt6Packages.qt6ct ]; 4 | xdg.configFile."qt6ct/qt6ct.conf".text = '' 5 | [Appearance] 6 | color_scheme_path=${./Catppuccin-Frappe.conf} 7 | custom_palette=true 8 | icon_theme=Papirus-Dark 9 | standard_dialogs=default 10 | style=Breeze 11 | [Fonts] 12 | fixed="Iosevka Nerd Font [UKWN],14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" 13 | general="Iosevka Nerd Font [UKWN],14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" 14 | [Interface] 15 | activate_item_on_single_click=1 16 | buttonbox_layout=0 17 | cursor_flash_time=1000 18 | dialog_buttons_have_icons=1 19 | double_click_interval=400 20 | keyboard_scheme=2 21 | menus_have_icons=true 22 | show_shortcuts_in_context_menus=true 23 | stylesheets=@Invalid() 24 | toolbutton_style=4 25 | underline_shortcut=1 26 | wheel_scroll_lines=3 27 | [PaletteEditor] 28 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\x1^\0\0\x4\x8e\0\0\x5%\0\0\0\0\0\0\x1^\0\0\x2v\0\0\x3n\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\x1^\0\0\x4\x8e\0\0\x5%) 29 | [SettingsWindow] 30 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\x1^\0\0\x3n\0\0\x4q\0\0\0\0\0\0\x1^\0\0\x2\xde\0\0\x4I\0\0\0\0\x2\0\0\0\n\0\0\0\0\0\0\0\x1^\0\0\x3n\0\0\x4q) 31 | [Troubleshooting] 32 | force_raster_widgets=1 33 | ignored_applications=@Invalid() 34 | ''; 35 | } 36 | -------------------------------------------------------------------------------- /modules/home-manager/gui/signal.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | home.packages = with pkgs; [ signal-desktop ]; 4 | xdg.desktopEntries = { 5 | "signal-desktop" = lib.mkForce { 6 | name = "Signal"; 7 | type = "Application"; 8 | icon = "signal-desktop"; 9 | terminal = false; 10 | exec = "mullvad-exclude signal-desktop --password-store=basic_text --no-sandbox %U"; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/ags/config/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Starter Config 3 | 4 | if suggestions don't work, first make sure 5 | you have TypeScript LSP working in your editor 6 | 7 | if you do not want typechecking only suggestions 8 | 9 | ```json 10 | // tsconfig.json 11 | "checkJs": false 12 | ``` 13 | 14 | types are symlinked to: 15 | /home/vaporsnake/.local/share/com.github.Aylur.ags/types 16 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/ags/config/config.js: -------------------------------------------------------------------------------- 1 | import "./modules/bar.ts" 2 | // import Overview from './modules/overview/main.js'; 3 | export { } 4 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/ags/config/modules/overview/actions.js: -------------------------------------------------------------------------------- 1 | import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; 2 | import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js'; 3 | 4 | function moveClientToWorkspace(address, workspace) { 5 | Utils.execAsync(['bash', '-c', `hyprctl dispatch movetoworkspacesilent ${workspace},address:${address} &`]); 6 | } 7 | 8 | export function dumpToWorkspace(from, to) { 9 | if (from == to) return; 10 | Hyprland.clients.forEach(client => { 11 | if (client.workspace.id == from) { 12 | moveClientToWorkspace(client.address, to); 13 | } 14 | }); 15 | } 16 | 17 | export function swapWorkspace(workspaceA, workspaceB) { 18 | if (workspaceA == workspaceB) return; 19 | const clientsA = []; 20 | const clientsB = []; 21 | Hyprland.clients.forEach(client => { 22 | if (client.workspace.id == workspaceA) clientsA.push(client.address); 23 | if (client.workspace.id == workspaceB) clientsB.push(client.address); 24 | }); 25 | 26 | clientsA.forEach((address) => moveClientToWorkspace(address, workspaceB)); 27 | clientsB.forEach((address) => moveClientToWorkspace(address, workspaceA)); 28 | } -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/ags/config/modules/overview/main.js: -------------------------------------------------------------------------------- 1 | import Widget from 'resource:///com/github/Aylur/ags/widget.js'; 2 | import { SearchAndWindows } from "./windowcontent.js"; 3 | import PopupWindow from '../.widgethacks/popupwindow.js'; 4 | 5 | export default (id = '') => PopupWindow({ 6 | name: `overview${id}`, 7 | exclusivity: 'ignore', 8 | keymode: 'exclusive', 9 | visible: false, 10 | // anchor: ['middle'], 11 | layer: 'overlay', 12 | child: Widget.Box({ 13 | vertical: true, 14 | children: [ 15 | SearchAndWindows(), 16 | ] 17 | }), 18 | }) 19 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/ags/config/style.css: -------------------------------------------------------------------------------- 1 | window.bar { 2 | background-color: @theme_bg_color; 3 | color: @theme_fg_color; 4 | } 5 | 6 | button { 7 | min-width: 0; 8 | padding-top: 0; 9 | padding-bottom: 0; 10 | background-color: transparent; 11 | } 12 | 13 | button:active { 14 | background-color: @theme_selected_bg_color; 15 | } 16 | 17 | button:hover { 18 | background-color: @theme_bg_color; 19 | } 20 | 21 | label { 22 | font-size: 13px; 23 | font-weight: bold; 24 | } 25 | .workspaces { 26 | padding: 3px; 27 | } 28 | .workspaces button.focused { 29 | background-color: @theme_selected_bg_color; 30 | } 31 | 32 | .client-title { 33 | color: @theme_selected_bg_color; 34 | } 35 | 36 | .notification { 37 | color: yellow; 38 | } 39 | 40 | levelbar block, 41 | highlight { 42 | min-height: 10px; 43 | } 44 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/ags/config/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "module": "ES2022", 5 | "lib": [ 6 | "ES2022" 7 | ], 8 | "allowJs": true, 9 | "checkJs": true, 10 | "strict": true, 11 | "noImplicitAny": false, 12 | "baseUrl": ".", 13 | "typeRoots": [ 14 | "./types" 15 | ], 16 | "skipLibCheck": true 17 | } 18 | } -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/ags/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | { 3 | imports = [ inputs.ags.homeManagerModules.default ]; 4 | programs.ags = { 5 | enable = true; 6 | # package = ../../packages/pkgcustom/ags; 7 | # null or patch, leave as null if you don't want hm to manage the config 8 | # configDir = ./config; 9 | configDir = null; 10 | extraPackages = with pkgs; [ 11 | gtksourceview 12 | webkitgtk 13 | accountsservice 14 | bun 15 | ]; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/anyrun.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | { 3 | imports = [ inputs.anyrun.homeManagerModules.default ]; 4 | programs.anyrun = { 5 | enable = true; 6 | config = { 7 | plugins = [ 8 | inputs.anyrun.packages.${pkgs.system}.applications 9 | inputs.anyrun.packages.${pkgs.system}.shell 10 | inputs.anyrun.packages.${pkgs.system}.translate 11 | inputs.anyrun.packages.${pkgs.system}.websearch 12 | inputs.anyrun.packages.${pkgs.system}.dictionary 13 | inputs.anyrun.packages.${pkgs.system}.kidex 14 | ]; 15 | x = { 16 | fraction = 0.5; 17 | }; 18 | y = { 19 | fraction = 0.0; 20 | }; 21 | hideIcons = false; 22 | layer = "overlay"; 23 | width = { 24 | absolute = 800; 25 | }; 26 | height = { 27 | absolute = 0; 28 | }; 29 | ignoreExclusiveZones = false; 30 | hidePluginInfo = false; 31 | closeOnClick = false; 32 | maxEntries = 10; 33 | showResultsImmediately = true; 34 | }; 35 | extraCss = null; 36 | extraConfigFiles."websearch.ron".text = '' 37 | Config( 38 | prefix: "?", 39 | // Options: Google, Ecosia, Bing, DuckDuckGo, Custom 40 | // 41 | // Custom engines can be defined as such: 42 | Custom( 43 | name: "Brave", 44 | url: "https://search.brave.com/search?q={}", 45 | ) 46 | // 47 | // NOTE: `{}` is replaced by the search query and `https://` is automatically added in front. 48 | engines: [Brave] 49 | ) 50 | ''; 51 | }; 52 | } 53 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/flameshot.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | home.packages = with pkgs; [ 4 | (pkgs.flameshot.overrideAttrs { 5 | # src = pkgs.fetchFromGitHub { 6 | # owner = "flameshot-org"; 7 | # repo = "flameshot"; 8 | # rev = "14a136777cd82ab70f42c13b4bc9418c756d91d2"; 9 | # sha256 = "sha256-xM99adstwfOOaeecKyWQU3yY0p65pQyFgoz7WJNra98="; 10 | # }; 11 | cmakeFlags = [ 12 | "-DUSE_WAYLAND_GRIM=True" 13 | "-DUSE_WAYLAND_CLIPBOARD=1" 14 | ]; 15 | buildInputs = with pkgs; [ libsForQt5.kguiaddons ]; 16 | }) 17 | ]; 18 | } 19 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/ghostty.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs.ghostty = { 3 | enable = true; 4 | enableZshIntegration = true; 5 | enableBashIntegration = true; 6 | installVimSyntax = true; 7 | settings = { 8 | font-size = 13; 9 | theme = "catppuccin-frappe"; 10 | font-family = "Iosevka Nerd Font"; 11 | font-family-bold = "Iosevka Nerd Font Bold"; 12 | font-family-italic = "Iosevka Nerd Font Italic"; 13 | font-family-bold-italic = "Iosevka Nerd Font Italic Bold"; 14 | }; 15 | themes = { 16 | catppuccin-frappe = { 17 | palette = [ 18 | "0=#51576d" 19 | "1=#e78284" 20 | "2=#a6d189" 21 | "3=#e5c890" 22 | "4=#8caaee" 23 | "5=#f4b8e4" 24 | "6=#81c8be" 25 | "7=#b5bfe2" 26 | "8=#626880" 27 | "9=#e78284" 28 | "10=#a6d189" 29 | "11=#e5c890" 30 | "12=#8caaee" 31 | "13=#f4b8e4" 32 | "14=#81c8be" 33 | "15=#a5adce" 34 | ]; 35 | background = "303446"; 36 | foreground = "c6d0f5"; 37 | cursor-color = "f2d5cf"; 38 | cursor-text = "303446"; 39 | selection-background = "44494d"; 40 | selection-foreground = "c6d0f5"; 41 | }; 42 | }; 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/kitty.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs.kitty = { 3 | enable = true; 4 | theme = "Catppuccin-Frappe"; 5 | font = { 6 | name = "Iosevka Nerd Font"; 7 | size = 13; 8 | }; 9 | settings = { 10 | confirm_os_window_close = 0; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/spicetify.nix: -------------------------------------------------------------------------------- 1 | { pkgs, inputs, ... }: 2 | let 3 | officialThemesOLD = pkgs.fetchgit { 4 | url = "https://github.com/ardishco-the-great/spicetify-themes"; 5 | rev = "62e2f6d22a02db38567983c7501bf8d87890cfc9"; 6 | sha256 = "sha256-udfdPEwruIStQJ6OQY2bvtkdjdi4/XFKQueM2cWSWa8="; 7 | }; 8 | in 9 | { 10 | imports = [ inputs.spicetify-nix.homeManagerModules.default ]; 11 | programs.spicetify = { 12 | enable = true; 13 | theme = { 14 | name = "text"; 15 | src = officialThemesOLD; 16 | injectCss = true; 17 | replaceColors = true; 18 | overwriteAssets = true; 19 | sidebarConfig = true; 20 | }; 21 | colorScheme = "CatppuccinLatte"; 22 | enabledExtensions = with inputs.spicetify-nix.legacyPackages.${pkgs.system}.extensions; [ 23 | adblock 24 | fullScreen 25 | skipStats 26 | volumePercentage 27 | history 28 | copyToClipboard 29 | showQueueDuration 30 | songStats 31 | playlistIcons 32 | groupSession 33 | skipOrPlayLikedSongs 34 | seekSong 35 | powerBar 36 | ]; 37 | enabledCustomApps = with inputs.spicetify-nix.legacyPackages.${pkgs.system}.apps; [ nameThatTune ]; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/sway.nix: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/swaync/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "/etc/xdg/swaync/configSchema.json", 3 | "positionX": "right", 4 | "positionY": "top", 5 | "layer": "overlay", 6 | "control-center-layer": "top", 7 | "layer-shell": true, 8 | "cssPriority": "application", 9 | "control-center-margin-top": 0, 10 | "control-center-margin-bottom": 0, 11 | "control-center-margin-right": 0, 12 | "control-center-margin-left": 0, 13 | "notification-2fa-action": true, 14 | "notification-inline-replies": false, 15 | "notification-icon-size": 64, 16 | "notification-body-image-height": 100, 17 | "notification-body-image-width": 200, 18 | "timeout": 10, 19 | "timeout-low": 5, 20 | "timeout-critical": 0, 21 | "fit-to-screen": true, 22 | "control-center-width": 500, 23 | "control-center-height": 600, 24 | "notification-window-width": 500, 25 | "keyboard-shortcuts": true, 26 | "image-visibility": "when-available", 27 | "transition-time": 200, 28 | "hide-on-clear": false, 29 | "hide-on-action": true, 30 | "script-fail-notify": true, 31 | "scripts": { 32 | "example-script": { 33 | "exec": "echo 'Do something...'", 34 | "urgency": "Normal" 35 | }, 36 | "example-action-script": { 37 | "exec": "echo 'Do something actionable!'", 38 | "urgency": "Normal", 39 | "run-on": "action" 40 | } 41 | }, 42 | "notification-visibility": { 43 | "example-name": { 44 | "state": "muted", 45 | "urgency": "Low", 46 | "app-name": "Spotify" 47 | } 48 | }, 49 | "widgets": [ 50 | "inhibitors", 51 | "title", 52 | "dnd", 53 | "notifications" 54 | ], 55 | "widget-config": { 56 | "inhibitors": { 57 | "text": "Inhibitors", 58 | "button-text": "Clear All", 59 | "clear-all-button": true 60 | }, 61 | "title": { 62 | "text": "Notifications", 63 | "clear-all-button": true, 64 | "button-text": "Clear All" 65 | }, 66 | "dnd": { 67 | "text": "Do Not Disturb" 68 | }, 69 | "label": { 70 | "max-lines": 5, 71 | "text": "Label Text" 72 | }, 73 | "mpris": { 74 | "image-size": 96, 75 | "image-radius": 12 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "include": "~/.config/waybar/modules", 3 | "name": "main-bar", // Waybar name 4 | "id": "main-bar", // Waybar id 5 | "layer": "", // Waybar at top layer 6 | "mode": "", // Display mode (dock|hide|invisible|overlay) 7 | "exclusive": true, // Request an exclusive zone from the compositor 8 | "passthrough": false, // Do not pass any pointer events to the window under the bar 9 | "position": "top", // Waybar position (top|bottom|left|right) 10 | "height": 45, // Waybar height (to be removed for auto height) 11 | "width": "", // Waybar width (empty for auto width) 12 | "spacing": 6, // Gaps between modules 13 | "margin": 0, // Space around the bar 14 | "margin-top": 0, // Space above the bar 15 | "margin-bottom": 0, // Space below the bar 16 | "margin-left": 0, // Space to the left of the bar 17 | "margin-right": 0, // Space to the right of the bar 18 | "fixed-center": true, // Center modules position 19 | "ipc": true, // Control waybar with `swaymsg bar` commands 20 | // Choose the order of the modules 21 | //"modules-left": ["custom/menu", "mpd", "custom/themes"], 22 | "modules-left": ["custom/menu", "hyprland/workspaces", "hyprland/language"], 23 | "modules-right": ["hyprland/window", "tray", "pulseaudio", "backlight", "bluetooth", "network", "battery", "clock", "custom/power"], 24 | }, 25 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/waybar/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | # style.css 3 | programs.waybar.enable = true; 4 | xdg.configFile = { 5 | "waybar/style.css".source = ./style.css; 6 | # config 7 | "waybar/config".source = ./config; 8 | # modules 9 | "waybar/modules".source = ./modules; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/wlogout/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | { 3 | home.packages = with pkgs; [ wlogout ]; 4 | xdg.configFile."wlogout/layout".source = ./layout; 5 | } 6 | -------------------------------------------------------------------------------- /modules/home-manager/gui/unused/wlogout/layout: -------------------------------------------------------------------------------- 1 | { 2 | "label" : "lock", 3 | "action" : "${inputs.hyprlock.packages.${pkgs.system}.hyprlock}/bin/hyprlock", 4 | "text" : "Lock", 5 | "keybind" : "l" 6 | } 7 | { 8 | "label" : "hibernate", 9 | "action" : "systemctl hibernate", 10 | "text" : "Hibernate", 11 | "keybind" : "h" 12 | } 13 | { 14 | "label" : "logout", 15 | "action" : "loginctl terminate-user $USER", 16 | "text" : "Logout", 17 | "keybind" : "e" 18 | } 19 | { 20 | "label" : "shutdown", 21 | "action" : "systemctl poweroff", 22 | "text" : "Shutdown", 23 | "keybind" : "s" 24 | } 25 | { 26 | "label" : "suspend", 27 | "action" : "systemctl suspend", 28 | "text" : "Suspend", 29 | "keybind" : "u" 30 | } 31 | { 32 | "label" : "reboot", 33 | "action" : "systemctl reboot", 34 | "text" : "Reboot", 35 | "keybind" : "r" 36 | } 37 | -------------------------------------------------------------------------------- /modules/home-manager/gui/virt-manager.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | home.packages = with pkgs; [ virt-manager ]; 4 | xdg.desktopEntries = { 5 | "virt-manager" = lib.mkForce { 6 | name = "Virtual Machine Manager"; 7 | type = "Application"; 8 | icon = "virt-manager"; 9 | terminal = false; 10 | exec = "mullvad-exclude virt-manager"; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/home-manager/gui/wezterm.nix: -------------------------------------------------------------------------------- 1 | { 2 | programs.wezterm = { 3 | enable = true; 4 | enableBashIntegration = true; 5 | enableZshIntegration = true; 6 | extraConfig = '' 7 | local wezterm = require 'wezterm' 8 | 9 | return { 10 | font = wezterm.font("Iosevka Nerd Font"), 11 | font_size = 13.0, 12 | enable_scroll_bar = true, 13 | color_scheme = "catppuccin-frappe", 14 | } 15 | ''; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /modules/home-manager/gui/zed.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | programs.zed-editor = { 4 | enable = true; 5 | package = pkgs.zed-editor; 6 | extensions = [ 7 | "nix" 8 | "cpp2" 9 | "csharp" 10 | "sql" 11 | "ssh-config" 12 | "scss" 13 | "unocss" 14 | "jsonnet" 15 | "pylsp" 16 | "crates-lsp" 17 | "dockerfile" 18 | "toml" 19 | "java" 20 | "discord-presence" 21 | "catppuccin" 22 | "catppuccin-icons" 23 | "nu" 24 | ]; 25 | extraPackages = [ 26 | pkgs.nixd 27 | pkgs.nil 28 | ]; 29 | userSettings = { 30 | features = { 31 | copilot = false; 32 | }; 33 | telemetry = { 34 | metrics = false; 35 | }; 36 | vim_mode = true; 37 | enable_language_server = true; 38 | formatter = "auto"; 39 | icon_theme = lib.mkForce { 40 | light = "Catppuccin Frappe"; 41 | dark = "Catppuccin Frappe"; 42 | }; 43 | theme = { 44 | light = lib.mkForce "Catppuccin Frappé"; 45 | dark = lib.mkForce "Catppuccin Frappé"; 46 | }; 47 | }; 48 | }; 49 | } 50 | -------------------------------------------------------------------------------- /modules/home-manager/other/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./home.nix 4 | ./nixpkgs.nix 5 | ./xdg.nix 6 | ./mimetypes.nix 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /modules/home-manager/other/nixpkgs.nix: -------------------------------------------------------------------------------- 1 | { nixpkgs.config.allowUnfree = true; } 2 | -------------------------------------------------------------------------------- /modules/home-manager/other/xdg.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | { 3 | xdg.mimeApps = { 4 | enable = true; 5 | defaultApplications = { 6 | "x-scheme-handler/magnet" = [ "mpv.desktop" ]; 7 | "x-scheme-handler/curseforge" = [ "prismlauncher.desktop" ]; 8 | "application/x-doom" = [ "gzdoom.desktop" ]; 9 | }; 10 | }; 11 | xdg.desktopEntries = { 12 | "steam" = lib.mkForce { 13 | name = "Steam (mullvad-exclude)"; 14 | type = "Application"; 15 | icon = "steam"; 16 | terminal = false; 17 | exec = "mullvad-exclude steam %u"; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/home-manager/packages/default.nix: -------------------------------------------------------------------------------- 1 | { imports = [ ./packages.nix ]; } 2 | -------------------------------------------------------------------------------- /modules/home-manager/packages/pkgcustom/fdm/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | fetchurl, 5 | dpkg, 6 | wrapGAppsHook, 7 | autoPatchelfHook, 8 | udev, 9 | libdrm, 10 | libpqxx, 11 | unixODBC, 12 | gst_all_1, 13 | }: 14 | 15 | stdenv.mkDerivation rec { 16 | pname = "freedownloadmanager"; 17 | version = "6.25.0"; 18 | 19 | src = fetchurl { 20 | url = "https://files2.freedownloadmanager.org/6/latest/freedownloadmanager.deb"; 21 | hash = "sha256-qTc2PIIfW+YuSAb8z3Vpf2bTdhumoZXOATsBUG2EYTY="; 22 | }; 23 | 24 | unpackPhase = "dpkg-deb -x $src ."; 25 | 26 | nativeBuildInputs = [ 27 | dpkg 28 | wrapGAppsHook 29 | autoPatchelfHook 30 | ]; 31 | 32 | buildInputs = 33 | [ 34 | libdrm 35 | libpqxx 36 | unixODBC 37 | stdenv.cc.cc 38 | ] 39 | ++ (with gst_all_1; [ 40 | gstreamer 41 | gst-libav 42 | gst-plugins-base 43 | gst-plugins-good 44 | gst-plugins-bad 45 | gst-plugins-ugly 46 | ]); 47 | 48 | runtimeDependencies = [ 49 | (lib.getLib udev) 50 | ]; 51 | 52 | installPhase = '' 53 | mkdir -p $out/bin 54 | cp -r opt/freedownloadmanager $out 55 | cp -r usr/share $out 56 | ln -s $out/freedownloadmanager/fdm $out/bin/${pname} 57 | 58 | substituteInPlace $out/share/applications/freedownloadmanager.desktop \ 59 | --replace 'Exec=/opt/freedownloadmanager/fdm' 'Exec=${pname}' \ 60 | --replace "Icon=/opt/freedownloadmanager/icon.png" "Icon=$out/freedownloadmanager/icon.png" 61 | ''; 62 | 63 | meta = with lib; { 64 | description = "A smart and fast internet download manager"; 65 | homepage = "https://www.freedownloadmanager.org"; 66 | license = licenses.unfree; 67 | platforms = [ "x86_64-linux" ]; 68 | sourceProvenance = with sourceTypes; [ binaryNativeCode ]; 69 | maintainers = with maintainers; [ ]; 70 | }; 71 | } 72 | -------------------------------------------------------------------------------- /modules/home-manager/packages/pkgcustom/gpu-screen-recorder-gtk/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | stdenv, 3 | lib, 4 | fetchurl, 5 | pkg-config, 6 | makeWrapper, 7 | gtk3, 8 | libpulseaudio, 9 | libdrm, 10 | gpu-screen-recorder, 11 | libglvnd, 12 | wrapGAppsHook, 13 | libXcomposite, 14 | ffmpeg, 15 | wayland, 16 | libva, 17 | libXrandr, 18 | pulseaudioFull, 19 | }: 20 | stdenv.mkDerivation { 21 | pname = "gpu-screen-recorder-gtk"; 22 | version = "3.2.5"; 23 | 24 | src = fetchurl { 25 | url = "https://dec05eba.com/snapshot/gpu-screen-recorder-gtk.git.r175.cfd18af.tar.gz"; 26 | hash = "sha256-HhZe22Hm9yGoy5WoyuP2+Wj8E3nMs4uf96mzmP6CMqU="; 27 | }; 28 | sourceRoot = "."; 29 | 30 | nativeBuildInputs = [ 31 | pkg-config 32 | makeWrapper 33 | wrapGAppsHook 34 | ]; 35 | 36 | buildInputs = [ 37 | gtk3 38 | libpulseaudio 39 | libdrm 40 | libXcomposite 41 | ffmpeg 42 | wayland 43 | libva 44 | libXrandr 45 | pulseaudioFull 46 | ]; 47 | 48 | buildPhase = '' 49 | ./build.sh 50 | ''; 51 | 52 | installPhase = '' 53 | install -Dt $out/bin/ gpu-screen-recorder-gtk 54 | install -Dt $out/share/applications/ gpu-screen-recorder-gtk.desktop 55 | 56 | gappsWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ gpu-screen-recorder ]}) 57 | # we also append /run/opengl-driver/lib as it otherwise fails to find libcuda. 58 | gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : ${ 59 | lib.makeLibraryPath [ libglvnd ] 60 | }:/run/opengl-driver/lib) 61 | ''; 62 | 63 | meta = with lib; { 64 | description = "GTK frontend for gpu-screen-recorder."; 65 | homepage = "https://git.dec05eba.com/gpu-screen-recorder-gtk/about/"; 66 | license = licenses.gpl3Only; 67 | maintainers = with maintainers; [ babbaj ]; 68 | platforms = [ "x86_64-linux" ]; 69 | }; 70 | } 71 | -------------------------------------------------------------------------------- /modules/home-manager/packages/pkgcustom/lime3ds/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | fetchFromGitHub, 5 | cmake, 6 | qt6, 7 | SDL2, 8 | portaudio, 9 | gcc_multi, 10 | pipewire, 11 | xorg, 12 | spirv-tools, 13 | pulseaudio, 14 | git, 15 | openssl, 16 | jack1, 17 | sndio, 18 | }: 19 | stdenv.mkDerivation rec { 20 | pname = "lime3ds"; 21 | version = "2109"; 22 | 23 | src = fetchFromGitHub { 24 | owner = "Lime3DS"; 25 | repo = "Lime3DS"; 26 | rev = "2733189c0d548228f34a127e264d0afa4507e30e"; 27 | hash = "sha256-BHkzOo5hFmwR/9N3Tg5p6qpZJQVk0x4R0voQpYsnaDs="; 28 | fetchSubmodules = true; 29 | }; 30 | 31 | nativeBuildInputs = [ 32 | cmake 33 | qt6.full 34 | SDL2 35 | portaudio 36 | gcc_multi 37 | pipewire 38 | xorg.libX11 39 | xorg.libXext 40 | spirv-tools 41 | pulseaudio 42 | git 43 | openssl 44 | jack1 45 | sndio 46 | ]; 47 | 48 | cmakeFlags = [ 49 | "-DCMAKE_POLICY_DEFAULT_CMP0025=NEW" 50 | "--no-warn-unused-cli" 51 | # "-DCMAKE_BUILD_TYPE=Release" 52 | ]; 53 | 54 | meta = with lib; { 55 | description = "A Nintendo 3DS emulator based on Citra"; 56 | homepage = "https://github.com/Lime3DS/Lime3DS"; 57 | license = licenses.gpl2Only; 58 | maintainers = with maintainers; [ ]; 59 | mainProgram = "lime3ds"; 60 | platforms = platforms.all; 61 | }; 62 | } 63 | -------------------------------------------------------------------------------- /modules/home-manager/packages/pkgcustom/mcpelauncher/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | fetchFromGitHub, 5 | cmake, 6 | openssl, 7 | qt6, 8 | }: 9 | 10 | stdenv.mkDerivation rec { 11 | pname = "mcpelauncher-manifest"; 12 | version = "0.14.1-qt6"; 13 | 14 | src = fetchFromGitHub { 15 | owner = "minecraft-linux"; 16 | repo = "mcpelauncher-manifest"; 17 | rev = "v${version}"; 18 | hash = "sha256-Mpgi1iorM+BeLyubpx6uPxF5HxvYVYKgpW/hF0FvlrA="; 19 | fetchSubmodules = true; 20 | }; 21 | 22 | nativeBuildInputs = [ 23 | cmake 24 | openssl 25 | qt6.full 26 | ]; 27 | 28 | meta = with lib; { 29 | description = "The main repository for the Linux and Mac OS Bedrock edition Minecraft launcher"; 30 | homepage = "https://github.com/minecraft-linux/mcpelauncher-manifest"; 31 | license = licenses.gpl3Only; 32 | maintainers = with maintainers; [ ]; 33 | mainProgram = "mcpelauncher-manifest"; 34 | platforms = platforms.all; 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /modules/home-manager/packages/pkgcustom/nook-desktop/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | fetchFromGitHub, 5 | jre, 6 | }: 7 | 8 | stdenv.mkDerivation rec { 9 | pname = "nook-desktop"; 10 | version = "1.0.10"; 11 | 12 | src = fetchFromGitHub { 13 | owner = "mn6"; 14 | repo = "nook-desktop"; 15 | rev = "v${version}"; 16 | hash = "sha256-FQQxxPr1yAxxCxHE1Nedr2cZ036FekWwGpyOBGFKSdQ="; 17 | }; 18 | 19 | buildInputs = [ jre ]; 20 | 21 | meta = with lib; { 22 | description = "Desktop version of Nook, since Chrome MV3 will render it unusable"; 23 | homepage = "https://github.com/mn6/nook-desktop"; 24 | license = licenses.gpl2; # FIXME: nix-init did not found a license 25 | maintainers = with maintainers; [ ]; 26 | mainProgram = "nook-desktop"; 27 | platforms = platforms.all; 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /modules/home-manager/packages/pkgcustom/pdiary/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | python3Packages, 4 | fetchFromGitHub, 5 | fetchurl, 6 | pkgs, 7 | }: 8 | let 9 | sqlcipher3-binary = python3Packages.buildPythonPackage rec { 10 | pname = "sqlcipher3-binary"; 11 | version = "0.5.2"; 12 | 13 | #disabled = pythonOlder "3.6"; 14 | 15 | # if needed 16 | buildInputs = [ pkgs.sqlcipher ]; 17 | 18 | format = "setuptools"; 19 | 20 | src = fetchFromGitHub { 21 | owner = "coleifer"; 22 | repo = "sqlcipher3"; 23 | rev = version; 24 | sha256 = "sha256-RUwyGMv0za1N4OOz5YKP4Ma9NRHGpt9U4zssl9Gy00o"; 25 | }; 26 | 27 | meta = { 28 | description = "DB-API 2.0 interface for SQLCipher 3.x"; 29 | homepage = "https://github.com/coleifer/sqlcipher3"; 30 | license = lib.licenses.gpl3Only; 31 | maintainers = with lib.maintainers; [ Alxhr0 ]; 32 | }; 33 | }; 34 | npyscreen-master = python3Packages.npyscreen.overrideAttrs { 35 | src = fetchurl { 36 | url = "https://github.com/jwoglom/npyscreen/archive/master.tar.gz"; 37 | sha256 = "sha256-2crL/c1C+yRLRwb1T7enD28aB+TKY4Vxp+lAaMEv/JI="; 38 | }; 39 | }; 40 | in 41 | python3Packages.buildPythonPackage rec { 42 | pname = "pdiary"; 43 | version = "1.65"; 44 | pyproject = true; 45 | 46 | buildInputs = [ 47 | pkgs.sqlcipher 48 | sqlcipher3-binary 49 | python3Packages.setuptools 50 | ]; 51 | 52 | propagatedBuildInputs = [ 53 | python3Packages.pysqlcipher3 54 | python3Packages.peewee 55 | npyscreen-master 56 | ]; 57 | 58 | src = fetchFromGitHub { 59 | owner = "manipuladordedados"; 60 | repo = "pdiary"; 61 | rev = version; 62 | hash = "sha256-lsU1vouJNTjaGAjzGknIh+tOH8o4SIHT98pbniq1nPM="; 63 | }; 64 | 65 | postPatch = '' 66 | substituteInPlace setup.cfg \ 67 | --replace 'sqlcipher3-binary>=0.4.0' "" 68 | ''; 69 | 70 | pythonImportsCheck = [ "pdiary" ]; 71 | 72 | meta = with lib; { 73 | description = "A simple terminal diary journal application written in Python with encryption support"; 74 | homepage = "https://github.com/manipuladordedados/pdiary"; 75 | changelog = "https://github.com/manipuladordedados/pdiary/blob/${src.rev}/CHANGELOG.md"; 76 | license = licenses.gpl3Only; 77 | maintainers = with maintainers; [ Alxhr0 ]; 78 | mainProgram = "pdiary"; 79 | }; 80 | } 81 | -------------------------------------------------------------------------------- /modules/home-manager/packages/pkgcustom/sgdboop/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | fetchFromGitHub, 5 | curl, 6 | pkgs, 7 | }: 8 | stdenv.mkDerivation rec { 9 | pname = "sgdboop"; 10 | version = "1.2.8"; 11 | 12 | src = fetchFromGitHub { 13 | owner = "SteamGridDB"; 14 | repo = "SGDBoop"; 15 | rev = "v${version}"; 16 | hash = "sha256-bdSzTwObMEBe1pHTDwXeJ3GXmOwwFp4my7qTmifX218="; 17 | }; 18 | 19 | makeFlags = [ 20 | # Makefile copies a bundled libiup.so, so put it somewhere it won't be found 21 | "USER_LIB_PATH=ignored" 22 | 23 | # The Flakepak install just copies things to /app - otherwise wants to do things with XDG 24 | "FLATPAK_ID=fake" 25 | ]; 26 | 27 | postPatch = '' 28 | sed -i "s|Exec=|Exec=$out/bin/|" linux-release/com.steamgriddb.SGDBoop.desktop 29 | sed -i "s|/app/|$out/|g" Makefile 30 | ''; 31 | 32 | postInstall = '' 33 | rm -r "$out/share/metainfo" 34 | ''; 35 | 36 | buildInputs = [ 37 | curl 38 | pkgs.chickenPackages_5.chickenEggs.iup 39 | ]; 40 | 41 | meta = { 42 | description = "A program used for applying custom artwork to Steam, using SteamGridDB"; 43 | homepage = "https://github.com/SteamGridDB/SGDBoop/"; 44 | license = lib.licenses.cc-by-nc-sa-40; 45 | maintainers = [ lib.maintainers.puffnfresh ]; 46 | mainProgram = "SGDBoop"; 47 | platforms = lib.platforms.linux; 48 | }; 49 | } 50 | -------------------------------------------------------------------------------- /modules/home-manager/packages/pkgcustom/video-downloader/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | lib, 3 | stdenv, 4 | fetchFromGitHub, 5 | meson, 6 | ninja, 7 | python3, 8 | gettext, 9 | appstream-glib, 10 | desktop-file-utils, 11 | librsvg, 12 | gtk4, 13 | }: 14 | 15 | stdenv.mkDerivation rec { 16 | pname = "video-downloader"; 17 | version = "0.12.12"; 18 | 19 | src = fetchFromGitHub { 20 | owner = "Unrud"; 21 | repo = "video-downloader"; 22 | rev = "v${version}"; 23 | hash = "sha256-b10X2IEPqpLQh+rsoaVN5EOEU8hSrFWq3WqeDV35yI8="; 24 | }; 25 | 26 | nativeBuildInputs = [ 27 | meson 28 | ninja 29 | python3 30 | gettext 31 | appstream-glib 32 | librsvg 33 | gtk4 34 | desktop-file-utils 35 | ]; 36 | 37 | meta = with lib; { 38 | description = "Download videos from websites like YouTube and many others (based on yt-dlp"; 39 | homepage = "https://github.com/Unrud/video-downloader"; 40 | license = licenses.gpl3Only; 41 | maintainers = with maintainers; [ ]; 42 | mainProgram = "video-downloader"; 43 | platforms = platforms.all; 44 | }; 45 | } 46 | -------------------------------------------------------------------------------- /modules/home-manager/services/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | # ./swayosd.nix 4 | # ./hypridle.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/home-manager/services/hypridle.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | # { 3 | # imports = [ inputs.hypridle.homeManagerModules.default ]; 4 | # services = { 5 | # hypridle = { 6 | # enable = true; 7 | # lockCmd = "${inputs.hyprlock.packages.${pkgs.system}.hyprlock}/bin/hyprlock"; 8 | # }; 9 | # }; 10 | # } 11 | { 12 | xdg.configFile."hypr/hypridle.conf".text = '' 13 | listener { 14 | timeout = 1000 # in seconds 15 | on-timeout = ${ 16 | inputs.hyprlock.packages.${pkgs.system}.hyprlock 17 | }/bin/hyprlock # command to run when timeout has passed 18 | } 19 | listener { 20 | timeout = 11000 21 | on-timeout = systemctl suspend 22 | } 23 | ''; 24 | } 25 | -------------------------------------------------------------------------------- /modules/home-manager/services/swayosd.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | swayosd = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/home-manager/tui/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./neovim.nix 4 | # ./nushell.nix 5 | ./pdiary.nix 6 | ./vinegar.nix 7 | ./yazi.nix 8 | ./zsh.nix 9 | ]; 10 | } 11 | -------------------------------------------------------------------------------- /modules/home-manager/tui/nushell.nix: -------------------------------------------------------------------------------- 1 | _: { 2 | programs.nushell = { 3 | enable = true; 4 | configFile.text = " 5 | $env.config = { 6 | show_banner: false, 7 | } 8 | "; 9 | 10 | envFile.text = '' 11 | $env.FOO = 'BAR' 12 | ''; 13 | }; 14 | # Here we enable oh-my-posh. It doesn't have its own file for organization reasons. 15 | programs.oh-my-posh = { 16 | enable = true; 17 | useTheme = "catppuccin_frappe"; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /modules/home-manager/tui/pdiary.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | { 3 | home.packages = with pkgs; [ (callPackage ../packages/pkgcustom/pdiary { }) ]; 4 | xdg.desktopEntries = { 5 | pdiary = lib.mkForce { 6 | name = "pdiary"; 7 | type = "Application"; 8 | mimeType = [ "text/plain" ]; 9 | icon = "almanah"; 10 | exec = "${pkgs.wezterm}/bin/wezterm pdiary"; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/home-manager/tui/vinegar.nix: -------------------------------------------------------------------------------- 1 | { 2 | xdg.configFile."vinegar/config.toml".text = '' 3 | # In case you need some help, here: https://vinegarhq.github.io/Configuration 4 | 5 | [global] 6 | launcher = "mullvad-exclude gamescope -W 2560 -H 1440 --force-grab-cursor mangohud" 7 | 8 | [splash] 9 | background = 0x252836 10 | foreground = 0xC6D0F5 11 | 12 | [player] 13 | forced_version = "version-70a2467227df4077" 14 | 15 | [player.fflags] 16 | DFIntTaskSchedulerTargetFps = 640 # set to 640 for better performance 17 | ''; 18 | } 19 | -------------------------------------------------------------------------------- /modules/home-manager/tui/yazi.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | { 3 | programs.yazi = { 4 | enable = true; 5 | enableNushellIntegration = true; 6 | enableBashIntegration = true; 7 | enableZshIntegration = true; 8 | }; 9 | xdg.desktopEntries = { 10 | yazi = lib.mkForce { 11 | name = "yazi"; 12 | type = "Application"; 13 | mimeType = [ "text/plain" ]; 14 | icon = builtins.fetchurl { 15 | url = "https://raw.githubusercontent.com/sxyazi/yazi/main/assets/logo.png"; 16 | sha256 = "05crmd367v5915i553z172fsip6y8n8mvppjcpqxq9v7bml1vw3x"; 17 | }; 18 | exec = "${pkgs.wezterm}/bin/wezterm ${pkgs.yazi}/bin/yazi"; 19 | }; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /modules/home-manager/tui/zsh.nix: -------------------------------------------------------------------------------- 1 | { osConfig, config, ... }: 2 | { 3 | programs.zsh = { 4 | enable = true; 5 | autosuggestion = { 6 | enable = true; 7 | strategy = [ 8 | "completion" 9 | ]; 10 | }; 11 | enableCompletion = true; 12 | oh-my-zsh = { 13 | enable = true; 14 | theme = "duellj"; 15 | }; 16 | shellAliases = { 17 | ll = "ls -l"; 18 | ".." = "cd .."; 19 | rebuild = "nh os switch ~/NixOS/OuterHeaven"; 20 | rebuild-boot = "nh os boot /home/${ 21 | osConfig.users.users.${config.home.username}.description 22 | }/NixOS/OuterHeaven"; 23 | }; 24 | syntaxHighlighting = { 25 | enable = true; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /secrets/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, username, ... }: 2 | { 3 | imports = [ inputs.sops-nix.nixosModules.sops ]; 4 | sops = { 5 | defaultSopsFile = ./secrets.yaml; 6 | defaultSopsFormat = "yaml"; 7 | 8 | age.keyFile = "/home/${username}/.config/sops/age/keys.txt"; 9 | 10 | # Begin transmission of secrets 11 | 12 | secrets = { 13 | user-pass-dir = { }; 14 | root-pass-dir = { }; 15 | cf = { 16 | # owner = "cloudflared"; 17 | }; 18 | }; 19 | # templates = { 20 | # cloudflare = { 21 | # content = '' 22 | # ${config.sops.secrets.cloudflare.path} 23 | # ''; 24 | # }; 25 | # }; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /secrets/secrets.yaml: -------------------------------------------------------------------------------- 1 | user-pass-dir: ENC[AES256_GCM,data:cCO/A+o+JxrAId+44YHcNHNYfXXB0a8=,iv:PaV2dRL62rY3+SlJuUEFETceKI9wU494urb08sDkZXo=,tag:h2RQAgliGLu0M/JwfybngQ==,type:str] 2 | root-pass-dir: ENC[AES256_GCM,data:m4qdx2b2LU9VWZdSFI9QWbNUr4BKg4k=,iv:VQyAA5fhWyPWHFyEqh9+r+sOH6hpD3P5sRaXoc6WWAA=,tag:5IwlG4LTlLmnMpNaRe1qoA==,type:str] 3 | cf: ENC[AES256_GCM,data:30rSpp6qznf2liAfZS+Y7LZoHjo7uDyV7/qVjTAVpmKbalQruRriCki93uB6do1avcDgziLJKaT3GL7ZzdLEETt7r7dZeIwNNb4qyZZ27QjnQNxIOnf0rEYNh2iVuRpkcVrxE+vpf1TMxWazRmP0g8BBLrrDGs3ESkzdwuKHCVaZOO2kjDGW0jCDtUftbDS83plSS3eoxCnqRw6OZTsO2JSJgy0yr2aLbyzJgqMCO/PhCGwn,iv:8q4m6+zJHYTgcufshoRHvQUi+pEgwEKujouLGVDTDGM=,tag:mCsEeeiRhIny+y5CK0z6tA==,type:str] 4 | playit: null 5 | sops: 6 | kms: [] 7 | gcp_kms: [] 8 | azure_kv: [] 9 | hc_vault: [] 10 | age: 11 | - recipient: age1wgmeter89mp5pap3gh7ds4p2j7e3e20ue6m9yrptrxdudk3dqf0sreqxpx 12 | enc: | 13 | -----BEGIN AGE ENCRYPTED FILE----- 14 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiWitUZVhZdm1pT2NpTk13 15 | U2ZCdHBoMmxiejB2V25DSWFyVytDTXZDRVRVClF0SHZ3eWJnZ1N0a2pTMS9xMVhj 16 | Mnl3TklLT3ZYRmFZMDRTUEg4MUhQYW8KLS0tIGFIaW1NMTQrMlpqNkl3VTE5Sm1V 17 | MmJEaDR5T2hYUzZhTmZNakNNcWNXMGsK/jplZsxuAGaGr2kKecdFgBTd5IXK1rn0 18 | DlEIHj2FoCdlur/syrAPUAL/Cti2k2ITth6tf6oyxJ76liXBPlM4Vg== 19 | -----END AGE ENCRYPTED FILE----- 20 | lastmodified: "2024-08-23T00:10:19Z" 21 | mac: ENC[AES256_GCM,data:FPCbQNU+lNRfz3MFSHlDdQ6Dxq7NwskNEwvXPw5r8cvdg8YfKzJ/L6sPQ5SnCseJEGrr7p5c97SdNCncls+Ox9YVErXpAid2jnipM6f40+Be6lwiqKs1bKhw8b9d2GJl8ZR10QkshOaiZyrRxWuOnZ7unBPIejuRXC0HOMcn1gs=,iv:df03CdavAK4mB5xdW4CRbPMenOeWFMpfu5V2/NvmLpQ=,tag:QpCuLlMF8Y1Gtq0GHHCU0g==,type:str] 22 | pgp: [] 23 | unencrypted_suffix: _unencrypted 24 | version: 3.9.0 25 | -------------------------------------------------------------------------------- /server/cloudflare.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | users.users.cloudflared = { 4 | group = "cloudflared"; 5 | isSystemUser = true; 6 | }; 7 | users.groups.cloudflared = { }; 8 | 9 | systemd.services.cloudflared = { 10 | wantedBy = [ "multi-user.target" ]; 11 | after = [ 12 | "network-online.target" 13 | "systemd-resolved.service" 14 | ]; 15 | serviceConfig = { 16 | ExecStart = "${pkgs.cloudflared}/bin/cloudflared tunnel --no-autoupdate run --cred-file /etc/cred/cloudflare-cred.json homeserver"; 17 | Restart = "always"; 18 | User = "cloudflared"; 19 | Group = "cloudflared"; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /server/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./nextcloud.nix 4 | # ./palworld.nix 5 | ./parrot.nix 6 | ./cloudflare.nix 7 | ./vaultwarden.nix 8 | ./jellyfin.nix 9 | ./tailscale.nix 10 | ./nitter.nix 11 | # ./home-assistant.nix 12 | # ./minecraft 13 | ./playit.nix 14 | ]; 15 | } 16 | -------------------------------------------------------------------------------- /server/home-assistant.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.home-assistant = { 3 | enable = true; 4 | openFirewall = true; 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /server/jellyfin.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.jellyfin = { 3 | enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /server/nextcloud.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | { 3 | services.nextcloud = { 4 | enable = true; 5 | package = pkgs.nextcloud29; 6 | extraApps = { 7 | inherit (pkgs.nextcloud29Packages.apps) 8 | cookbook 9 | notes 10 | bookmarks 11 | maps 12 | tasks 13 | spreed 14 | previewgenerator 15 | phonetrack 16 | memories 17 | calendar 18 | contacts 19 | forms 20 | ; 21 | news = pkgs.fetchNextcloudApp { 22 | appName = "news"; 23 | sha256 = "sha256-9exftg1BS9pTJeKdJzt0XzXlFRDNZCh8aBgkC+e40zc="; 24 | url = "https://github.com/nextcloud/news/releases/download/25.0.0-alpha8/news.tar.gz"; 25 | appVersion = "25.0.0-alpha8"; 26 | license = "agpl3Plus"; 27 | }; 28 | epubviewer = pkgs.fetchNextcloudApp { 29 | appName = "epubviewer"; 30 | sha256 = "sha256-S2qd3mc/KS7QboJTVJce14wy9/yEvtFUxCaK9RuPrlI="; 31 | url = "https://github.com/devnoname120/epubviewer/releases/download/1.5.3/epubviewer-1.5.3.tar.gz"; 32 | appVersion = "1.5.3"; 33 | license = "agpl3Plus"; 34 | }; 35 | }; 36 | hostName = "nextcloud.ardishco.net"; 37 | config = { 38 | adminpassFile = "/etc/cred/nextcloud-admin-pass"; 39 | dbtype = "pgsql"; 40 | }; 41 | settings = { 42 | trusted_domains = [ 43 | "nextcloud.ardishco.net" 44 | "192.168.1.112" 45 | ]; 46 | }; 47 | }; 48 | # services.nginx.enable = true; 49 | # services.nginx.virtualHosts.${config.services.nextcloud.hostName} = { 50 | # forceSSL = true; 51 | # enableACME = true; 52 | # }; 53 | # security.acme.certs.default.email = "config.security.acme.defaults.email"; 54 | # security.acme.certs.default.listenHTTP = ":80"; 55 | # security.acme.acceptTerms = true; 56 | } 57 | -------------------------------------------------------------------------------- /server/nitter.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | nitter = { 4 | enable = true; 5 | server = { 6 | port = 8000; 7 | }; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /server/palworld.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | with lib; 3 | { 4 | programs.nix-ld.enable = true; 5 | users.users.palworld = { 6 | home = "/var/lib/palworld"; 7 | createHome = true; 8 | isSystemUser = true; 9 | group = "palworld"; 10 | }; 11 | users.groups.palworld = { }; 12 | 13 | # boot.kernel.sysctl."net.ipv6.conf.eth0.disable_ipv6" = true; 14 | networking.enableIPv6 = false; 15 | 16 | # nixpkgs.config.allowUnfree = true; 17 | # 18 | # networking = { 19 | # firewall = { 20 | # allowedUDPPorts = [15777 15000 7777 27015]; 21 | # allowedUDPPortRanges = [ 22 | # { 23 | # from = 27031; 24 | # to = 27036; 25 | # } 26 | # ]; 27 | # allowedTCPPorts = [27015 27036]; 28 | # }; 29 | # }; 30 | 31 | # -beta experimental \ 32 | systemd.services.palworld = { 33 | enable = true; 34 | preStart = '' 35 | ${pkgs.steamcmd}/bin/steamcmd \ 36 | +force_install_dir /var/lib/palworld/PalworldServer \ 37 | +login anonymous \ 38 | +app_update 2394010 \ 39 | validate \ 40 | +quit 41 | # mkdir -p ~/.steam/sdk64/ 42 | # steamcmd +login anonymous +app_update 1007 +quit 43 | # cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/ 44 | ''; 45 | script = '' 46 | ${pkgs.steam-run}/bin/steam-run /var/lib/palworld/PalworldServer/PalServer.sh 47 | # /var/lib/palworld/PalworldServer/PalServer.sh 48 | ''; 49 | serviceConfig = { 50 | Nice = "-5"; 51 | Restart = "always"; 52 | User = "palworld"; 53 | WorkingDirectory = "/var/lib/palworld"; 54 | }; 55 | }; 56 | } 57 | -------------------------------------------------------------------------------- /server/parrot.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: 2 | with lib; 3 | { 4 | users.users.parrot = { 5 | home = "/var/lib/parrot"; 6 | createHome = true; 7 | isSystemUser = true; 8 | group = "parrot"; 9 | }; 10 | users.groups.parrot = { }; 11 | 12 | # boot.kernel.sysctl."net.ipv6.conf.eth0.disable_ipv6" = true; 13 | networking.enableIPv6 = false; 14 | 15 | # -beta experimental \ 16 | systemd.services.parrot = { 17 | enable = true; 18 | script = '' 19 | ${pkgs.parrot}/bin/parrot 20 | ''; 21 | serviceConfig = { 22 | Nice = "-5"; 23 | Restart = "always"; 24 | User = "parrot"; 25 | WorkingDirectory = "/var/lib/parrot"; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /server/playit.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | { 3 | users.users.playit = { 4 | group = "playit"; 5 | isSystemUser = true; 6 | }; 7 | users.groups.playit = { }; 8 | 9 | systemd.services.playit = { 10 | wantedBy = [ "multi-user.target" ]; 11 | after = [ 12 | "network-online.target" 13 | "systemd-resolved.service" 14 | ]; 15 | serviceConfig = { 16 | ExecStart = "${ 17 | inputs.flux.packages.${pkgs.system}.playit 18 | }/bin/playit-cli --secret_path /etc/cred/playit.toml"; 19 | Restart = "always"; 20 | User = "playit"; 21 | Group = "playit"; 22 | WorkingDirectory = "/var/lib/playit"; 23 | }; 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /server/tailscale.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.tailscale = { 3 | enable = true; 4 | }; 5 | } 6 | -------------------------------------------------------------------------------- /server/vaultwarden.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.vaultwarden = { 3 | enable = true; 4 | backupDir = "/var/lib/bitwarden-backup"; 5 | config = { 6 | ROCKET_ADDRESS = "0.0.0.0"; 7 | ROCKET_PORT = 8222; 8 | DOMAIN = "https://vault.ardishco.net"; 9 | ROCKET_LOG = "critical"; 10 | SIGNUPS_ALLOWED = false; 11 | }; 12 | }; 13 | } 14 | --------------------------------------------------------------------------------