diff --git a/flake.nix b/flake.nix index 0cafe92..9c99596 100644 --- a/flake.nix +++ b/flake.nix @@ -74,6 +74,7 @@ in { nixosConfigurations = create-host [ "battleship" + "cruiser" "spacestation" ]; }; diff --git a/hosts/cruiser/configuration.nix b/hosts/cruiser/configuration.nix new file mode 100644 index 0000000..cc15d76 --- /dev/null +++ b/hosts/cruiser/configuration.nix @@ -0,0 +1,106 @@ +{ + config, + pkgs, + modulesPath, + ... +}: { + imports = [ + "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix" + ../../modules/nixos + ]; + + profiles.locale.enable = true; + + programs.hyprland.enable = true; + services.xserver = { + enable = true; + displayManager = { + sddm.enable = true; + }; + }; + + programs.gnupg.agent = { + enable = true; + pinentryPackage = pkgs.pinentry-gnome3; + settings = { + default-cache-ttl = 3600 * 24; + }; + }; + + services.tailscale = { + enable = true; + }; + + fonts.fontconfig.enable = true; + fonts.packages = with pkgs; [ + fira-code + (nerdfonts.override {fonts = ["FiraCode"];}) + ]; + + home-manager-helper.enable = true; + home-manager-helper.users."guz" = { + name = "guz"; + shell = pkgs.zsh; + initialPassword = "0000"; + home = import ./home.nix; + isNormalUser = true; + extraGroups = ["wheel" "networkmanager"]; + }; + + environment.sessionVariables = { + EDITOR = "nvim"; + }; + + environment.systemPackages = with pkgs; [ + git + ]; + + services.interception-tools = let + device = "/dev/input/by-id/usb-BY_Tech_Gaming_Keyboard-event-kbd"; + in { + enable = true; + plugins = [pkgs.interception-tools-plugins.caps2esc]; + udevmonConfig = '' + - JOB: "${pkgs.interception-tools}/bin/intercept -g ${device} | ${pkgs.interception-tools-plugins.caps2esc}/bin/caps2esc -m 2 | ${pkgs.interception-tools}/bin/uinput -d ${device}" + DEVICE: + EVENTS: + EV_KEY: [[KEY_CAPSLOCK, KEY_ESC]] + LINK: ${device} + ''; + }; + + environment.pathsToLink = [" /share/zsh "]; + + programs.zsh.enable = true; + + nix.settings.experimental-features = ["nix-command" "flakes"]; + nix.package = pkgs.nixVersions.nix_2_21; + + programs.nix-ld.enable = true; + programs.nix-ld.libraries = with pkgs; []; + + networking = { + hostName = "cruiser"; + }; + + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + #jack.enable = true; + }; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + nixpkgs.hostPlatform = "x86_64-linux"; +} diff --git a/hosts/cruiser/desktop.nix b/hosts/cruiser/desktop.nix new file mode 100644 index 0000000..f575827 --- /dev/null +++ b/hosts/cruiser/desktop.nix @@ -0,0 +1,48 @@ +{ + config, + pkgs, + lib, + ... +}: let + wallpaper = ../../static/guz-wallpaper-default.png; + desktop-boot = pkgs.writeShellScriptBin "desktop-boot" '' + function eww() { ${config.programs.eww.package}/bin/eww "$@"; } + function swww() { ${pkgs.swww}/bin/swww "$@"; } + function swww-daemon() { ${pkgs.swww}/bin/swww-daemon "$@"; } + + if [[ "$(eww ping)" -ne "pong" ]]; then + eww daemon &> /dev/null + fi + + eww close-all + eww open bar + eww open bar-2 + eww reload + + (swww-daemon &> /dev/null) & swww img "${/. + wallpaper}" + ''; +in + with lib; { + imports = [ + ../battleship/desktop + ]; + + programs.hyprland.settings.exec = mkForce [ + "${desktop-boot}/bin/desktop-boot" + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + ]; + programs.hyprland.settings.monitor = mkForce [ + "DEFAULT,preferred,auto,1" + ]; + programs.hyprland.settings.workspace = let + monitor-1 = "DEFAULT"; + in + mkForce + [ + "1,monitor:${monitor-1},default:true" + "2,monitor:${monitor-1}" + "3,monitor:${monitor-1}" + "4,monitor:${monitor-1}" + "5,monitor:${monitor-1}" + ]; + } diff --git a/hosts/cruiser/home.nix b/hosts/cruiser/home.nix new file mode 100644 index 0000000..75a9f77 --- /dev/null +++ b/hosts/cruiser/home.nix @@ -0,0 +1,29 @@ +{...}: { + imports = [ + ../../modules/home-manager + ./packages.nix + ./desktop.nix + ../../modules/home-manager/programs-old/librewolf + ]; + + profiles.gterminal.enable = true; + + programs.bash = { + enable = true; + initExtra = '' + export XDG_DATA_DIRS="$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share" + + export GPG_TTY=$(tty) + ''; + }; + + services.gnome-keyring.enable = true; + + programs.prismlauncher.enable = true; + + fonts.fontconfig.enable = true; + + home.sessionVariables = { + EDITOR = "nvim"; + }; +} diff --git a/hosts/cruiser/packages.nix b/hosts/cruiser/packages.nix new file mode 100644 index 0000000..e47f25e --- /dev/null +++ b/hosts/cruiser/packages.nix @@ -0,0 +1,53 @@ +{ + config, + pkgs, + inputs, + lib, + ... +}: { + imports = []; + + librewolf = { + enable = true; + profiles = { + guz = { + id = 0; + settings = { + "webgl.disabled" = false; + "browser.startup.homepage" = "https://search.brave.com"; + "privacy.clearOnShutdown.history" = false; + "privacy.clearOnShutdown.downloads" = false; + "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; + "privacy.clearOnShutdown.cookies" = false; + }; + extensions = with inputs.firefox-addons.packages."x86_64-linux"; [ + darkreader + canvasblocker + smart-referer + libredirect + tridactyl + ]; + }; + }; + }; + + programs.obsidian.enable = true; + programs.obsidian.vaultCmd = true; + programs.obsidian.vaultDir = "${config.home.homeDirectory}/.vault"; + + programs.krita.enable = true; + + nixpkgs.config.allowUnfree = true; + nixpkgs.config.allowUnfreePredicate = _: true; + home.packages = with pkgs; [ + ## Programs + webcord-vencord + pavucontrol + pinentry + gnome.nautilus + + ## Fonts + fira-code + (nerdfonts.override {fonts = ["FiraCode"];}) + ]; +}