commit cd3ca919f061b78db23876df40f13547d86aa1be Author: Ale Date: Mon Nov 13 19:41:32 2023 +0100 first commit diff --git a/emacs/init.el b/emacs/init.el new file mode 100644 index 0000000..0f5b8ab --- /dev/null +++ b/emacs/init.el @@ -0,0 +1,111 @@ +(setq gc-cons-threshold most-positive-fixnum) +(add-hook 'emacs-startup-hook + (lambda () + (setq gc-cons-threshold (expt 2 23)))) + +;; Install straight.el +(defvar bootstrap-version) +(let ((bootstrap-file + (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) + (bootstrap-version 6)) + (unless (file-exists-p bootstrap-file) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + (load bootstrap-file nil 'nomessage)) + +(straight-use-package 'use-package) + +(when (fboundp 'windmove-default-keybindings) + (windmove-default-keybindings)) + +(use-package straight + :custom + (straight-use-package-by-default t)) + +(use-package evil) +(use-package doom-themes + :config + (load-theme 'doom-dracula t)) +(use-package doom-modeline) +(use-package dashboard) +(use-package nerd-icons) +(use-package all-the-icons + :if (display-graphic-p)) + +(use-package hl-indent-scope) + +(use-package centaur-tabs + :demand + :config + (centaur-tabs-mode t) + :custom + (centaur-tabs-style "box") + (centaur-tabs-set-bar 'under) + (centaur-tabs-set-icons t) + + (centaur-tabs-height 32) + (centaur-tabs-set-modified-marker t) + (centaur-tabs-cycle-scope 'tabs) + :bind + ("C-" . centaur-tabs-forward) + ("C-" . centaur-tabs-backward)) + +(use-package dashboard) +(use-package lsp-ui + :custom (lsp-ui-sideline-show-diagnostics t)) + +(use-package lsp-mode + :custom (lsp-headerline-breadcrumb-enable nil)) +(use-package web-mode) +(use-package rust-mode) +(use-package lua-mode) +(use-package typescript-mode) +(use-package astro-ts-mode) +(use-package js2-mode) +(use-package svelte-mode) +(use-package lsp-java) +(use-package markdown-mode) + +(use-package company) +(use-package flycheck :ensure t :init (global-flycheck-mode)) + +(set-face-attribute 'default nil :font "victor mono" :height 120) +(tool-bar-mode -1) +(menu-bar-mode -1) +(scroll-bar-mode -1) +(display-line-numbers-mode 1) + +(doom-modeline-mode 1) +(evil-mode 1) + +(add-hook 'after-init-hook 'global-company-mode) + +(dashboard-setup-startup-hook) +(centaur-tabs-headline-match) + + +(setq x-underline-at-descent-line t) +(setq dashboard-banner-logo-title "Gock and Gum") +(setq inhibit-splash-screen t) +(setq warning-minimum-level :error) + +(setq org-startup-with-inline-images t) +(setq org-startup-indented t) +(setq org-pretty-entities t) + +(setq dashboard-startup-banner nil) +(setq doom-modeline-height 25) +(setq backup-directory-alist '(("." . "~/.config/emacs/backup"))) + +;; No more typing the whole yes or no. Just y or n will do. +(fset 'yes-or-no-p 'y-or-n-p) + +(evil-ex-define-cmd "q" 'kill-current-buffer) +(defun kill-this-buffer()(interactive)(kill-current-buffer)) + +(evil-ex-define-cmd "wq" 'save-and-kill-this-buffer) +(defun save-and-kill-this-buffer()(interactive)(save-buffer)(kill-current-buffer)) diff --git a/emacs/readme.md b/emacs/readme.md new file mode 100644 index 0000000..5a63a33 --- /dev/null +++ b/emacs/readme.md @@ -0,0 +1,3 @@ +# Requirements +fonts: +- victor-mono diff --git a/nixos/configuration/configuration-caketray.nix b/nixos/configuration/configuration-caketray.nix new file mode 100644 index 0000000..ae1ddde --- /dev/null +++ b/nixos/configuration/configuration-caketray.nix @@ -0,0 +1,197 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + + nix.extraOptions = '' + experimental-features = nix-command flakes + keep-outputs = true + keep-derivations = true + ''; + + imports = + [ # Include the results of the hardware scan. + ../hardware/hardware-caketray.nix + ]; + + virtualisation = { + podman = { + enable = true; + dockerCompat = true; + enableNvidia = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; + + nix = { + settings = { + auto-optimise-store = true; + }; + gc = { + automatic = true; + randomizedDelaySec = "14m"; + options = "--delete-older-than 10d"; + }; + }; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "caketray"; # Define your hostname. + + services.mullvad-vpn.enable = true; + networking.firewall.enable = false; + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Rome"; + + # Select internationalisation properties. + i18n.defaultLocale = "it_IT.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "it_IT.UTF-8"; + LC_IDENTIFICATION = "it_IT.UTF-8"; + LC_MEASUREMENT = "it_IT.UTF-8"; + LC_MONETARY = "it_IT.UTF-8"; + LC_NAME = "it_IT.UTF-8"; + LC_NUMERIC = "it_IT.UTF-8"; + LC_PAPER = "it_IT.UTF-8"; + LC_TELEPHONE = "it_IT.UTF-8"; + LC_TIME = "it_IT.UTF-8"; + }; + + environment.systemPackages = with pkgs; [ + killall + android-tools + + jdk + gcc + clang + clang-tools + cmake + gnumake + rustc + rust-analyzer + cargo + python3 + nodejs + lua + lua-language-server + ]; + + services.dbus.enable = true; + services.gnome.evolution-data-server.enable = true; + services.gnome.gnome-online-accounts.enable = true; + services.gnome.gnome-keyring.enable = true; + services.gvfs.enable = true; + programs.dconf.enable = true; + programs.fish.enable = true; + programs.adb.enable = true; + programs.gamemode.enable = true; + + xdg.portal = { + enable = true; + #wlr.enable = false; + xdgOpenUsePortal = true; + + # gtk portal needed to make gtk apps happy + extraPortals = [ + pkgs.xdg-desktop-portal-gtk #pkgs.xdg-desktop-portal-hyprland + ]; + }; + + # Config X11 + services.xserver = { + enable = true; + layout = "it"; + xkbVariant = ""; + displayManager.sddm.enable = true; + desktopManager.plasma5.enable = true; + + }; + + # Configure console keymap + console.keyMap = "it2"; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + 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; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.alecake = { + isNormalUser = true; + description = "Ale"; + extraGroups = [ "networkmanager" "wheel" ]; + shell = pkgs.fish; + }; + + security.pam.services.swaylock = {}; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + services.flatpak.enable = true; + fonts.fontDir.enable = true; + fonts.packages = with pkgs; [ + noto-fonts + unifont + jetbrains-mono + fira-code + fira-code-symbols + victor-mono + monocraft + nerdfonts + mononoki + times-newer-roman + emacs-all-the-icons-fonts + ]; + + services.udev.packages = [ pkgs.yubikey-personalization ]; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + security.pam.services = { + login.u2fAuth = true; + sudo.u2fAuth = true; + }; + systemd.user.extraConfig = '' + DefaultEnvironment="PATH=/run/current-system/sw/bin" + ''; + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "23.05"; # Did you read the comment? +} diff --git a/nixos/configuration/configuration-caketray.nix~ b/nixos/configuration/configuration-caketray.nix~ new file mode 100644 index 0000000..8e57b90 --- /dev/null +++ b/nixos/configuration/configuration-caketray.nix~ @@ -0,0 +1,180 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + + nix.extraOptions = '' + experimental-features = nix-command flakes + keep-outputs = true + keep-derivations = true + ''; + + imports = + [ # Include the results of the hardware scan. + ../hardware/hardware-caketray.nix + ]; + + virtualisation = { + podman = { + enable = true; + dockerCompat = true; + enableNvidia = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; + + nix = { + settings = { + auto-optimise-store = true; + }; + gc = { + automatic = true; + options = "--delete-older-than 28d"; + dates = "weekly"; + persistent = true; + }; + }; + + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "caketray"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + services.mullvad-vpn.enable = false; + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Rome"; + + # Select internationalisation properties. + i18n.defaultLocale = "it_IT.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "it_IT.UTF-8"; + LC_IDENTIFICATION = "it_IT.UTF-8"; + LC_MEASUREMENT = "it_IT.UTF-8"; + LC_MONETARY = "it_IT.UTF-8"; + LC_NAME = "it_IT.UTF-8"; + LC_NUMERIC = "it_IT.UTF-8"; + LC_PAPER = "it_IT.UTF-8"; + LC_TELEPHONE = "it_IT.UTF-8"; + LC_TIME = "it_IT.UTF-8"; + }; + + environment.systemPackages = with pkgs; [ + wayland + grim + slurp + wl-clipboard + wdisplays + killall + networkmanagerapplet + ]; + + services.dbus.enable = true; + services.gnome.evolution-data-server.enable = true; + services.gnome.gnome-online-accounts.enable = true; + # optional to use google/nextcloud calendar + services.gnome.gnome-keyring.enable = true; + services.gvfs.enable = true; + programs.nm-applet.enable = true; + programs.kdeconnect.enable = true; + programs.dconf.enable = true; + + xdg.portal = { + enable = true; + wlr.enable = false; + # gtk portal needed to make gtk apps happy + extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-hyprland]; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + + # Configure keymap in X11 + services.xserver = { + layout = "it"; + xkbVariant = ""; + }; + + # Configure console keymap + console.keyMap = "it2"; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + 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; + }; + programs.fish.enable = true; + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.alecake = { + isNormalUser = true; + description = "Ale"; + extraGroups = [ "networkmanager" "wheel" ]; + shell = pkgs.fish; + }; + + security.pam.services.swaylock = {}; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + services.flatpak.enable = true; + fonts.fontDir.enable = true; + fonts.fonts = with pkgs; [ + noto-fonts + jetbrains-mono + fira-code + victor-mono + monocraft + noto-fonts-cjk + noto-fonts-cjk-serif + noto-fonts-cjk-sans + ]; + + + services.udev.packages = [ pkgs.yubikey-personalization ]; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "23.05"; # Did you read the comment? + +} diff --git a/nixos/configuration/configuration-giacomino.nix b/nixos/configuration/configuration-giacomino.nix new file mode 100644 index 0000000..5f5b48b --- /dev/null +++ b/nixos/configuration/configuration-giacomino.nix @@ -0,0 +1,140 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ../hardware/hardware-giacomino.nix + ]; + + nix.extraOptions = '' + experimental-features = nix-command flakes + keep-outputs = true + keep-derivations = true + ''; + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking = { + hostName = "giacomino"; + networkmanager.enable = true; + firewall.enable = false; + }; + + time.timeZone = "Europe/Rome"; + i18n = { + defaultLocale = "it_IT.UTF-8"; + extraLocaleSettings = { + LC_ADDRESS = "it_IT.UTF-8"; + LC_IDENTIFICATION = "it_IT.UTF-8"; + LC_MEASUREMENT = "it_IT.UTF-8"; + LC_MONETARY = "it_IT.UTF-8"; + LC_NAME = "it_IT.UTF-8"; + LC_NUMERIC = "it_IT.UTF-8"; + LC_PAPER = "it_IT.UTF-8"; + LC_TELEPHONE = "it_IT.UTF-8"; + LC_TIME = "it_IT.UTF-8"; + }; + }; + + # Configure keymap in X11 + services.xserver = { + layout = "it"; + xkbVariant = "qwerty"; + }; + + # Configure console keymap + console.keyMap = "it2"; + + virtualisation = { + podman = { + enable = true; + + # Create a `docker` alias for podman, to use it as a drop-in replacement + dockerCompat = true; + + # Required for containers under podman-compose to be able to talk to each other. + defaultNetwork.settings.dns_enabled = true; + }; + }; + + programs.fish.enable = true; + programs.dconf.enable = true; + + users.users.ale = { + isNormalUser = true; + description = "Ale"; + extraGroups = [ "networkmanager" "wheel" ]; + shell = pkgs.fish; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + environment.systemPackages = with pkgs; [ + alacritty + wayland + wayfire + grim + slurp + wl-clipboard + wdisplays + + helix + git + wget + ]; + + programs.thunar.enable = true; + + programs.sway = { + enable = true; + wrapperFeatures.gtk = true; + }; + + services.pipewire = { + enable = true; + pulse.enable = true; + }; + + services.dbus.enable = true; + xdg.portal = { + enable = true; + wlr.enable = true; + # gtk portal needed to make gtk apps happy + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + }; + + services.upower.enable = true; + services.openssh.enable = true; + services.flatpak.enable = true; + + fonts.fonts = with pkgs; [ + noto-fonts + jetbrains-mono + fira-code + ]; + + fonts.fontDir.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + + # if you touch you die + system.stateVersion = "23.05"; # Did you read the comment? + +} diff --git a/nixos/flake.lock b/nixos/flake.lock new file mode 100644 index 0000000..4035105 --- /dev/null +++ b/nixos/flake.lock @@ -0,0 +1,405 @@ +{ + "nodes": { + "emacs-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1695612850, + "narHash": "sha256-XHndbQIku+3wFuvQj8gkKWuLTbS+BP8j3s41oAJ/wMo=", + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "5f0b496aa00886a17cf42faa94dce57e0f7ab20c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "emacs-overlay", + "type": "github" + } + }, + "eww": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs_2", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1692622179, + "narHash": "sha256-vxMGAa/RTsMADPK4dM/28SV2ktCT0DenYvGsHZ4IJ8c=", + "owner": "ralismark", + "repo": "eww", + "rev": "a82ed62c25ba50f28dc8c3d57efe440d51d6136b", + "type": "github" + }, + "original": { + "owner": "ralismark", + "ref": "tray-3", + "repo": "eww", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1695550077, + "narHash": "sha256-xoxR/iY69/3lTnnZDP6gf3J46DUKPcf+Y1jH03tfZXE=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "a88df2fb101778bfd98a17556b3a2618c6c66091", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "nixpkgs": "nixpkgs_3", + "systems": "systems_3", + "wlroots": "wlroots", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1695594015, + "narHash": "sha256-mIRfWvDXH6WKAUxB+PVHmZJRE/TI9MFMNvcIucO6eqM=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "3b657257ecb7628a12a4fe72e733a60f031bfec2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-contrib": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1695455081, + "narHash": "sha256-AtAMze2J5Maol28OLQoCFgppRWEy06Mn9RhduXNmhiI=", + "owner": "hyprwm", + "repo": "contrib", + "rev": "33663f663e07b4ca52c9165f74e3d793f08b15e7", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "contrib", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1691753796, + "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1695360818, + "narHash": "sha256-JlkN3R/SSoMTa+CasbxS1gq+GpGxXQlNZRUh9+LIy/0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e35dcc04a3853da485a396bdd332217d0ac9054f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1692463654, + "narHash": "sha256-F8hZmsQINI+S6UROM4jyxAMbQLtzE44pI8Nk6NtMdao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1694767346, + "narHash": "sha256-5uH27SiVFUwsTsqC5rs3kS7pBoNhtoy9QfTP9BmknGk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ace5093e36ab1e95cb9463863491bee90d5a4183", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1658161305, + "narHash": "sha256-X/nhnMCa1Wx4YapsspyAs6QYz6T/85FofrI6NpdPDHg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e4d49de45a3b5dbcb881656b4e3986e666141ea9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1695360818, + "narHash": "sha256-JlkN3R/SSoMTa+CasbxS1gq+GpGxXQlNZRUh9+LIy/0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e35dcc04a3853da485a396bdd332217d0ac9054f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "emacs-overlay": "emacs-overlay", + "eww": "eww", + "home-manager": "home-manager", + "hyprland": "hyprland", + "hyprland-contrib": "hyprland-contrib", + "nixpkgs": "nixpkgs_5" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "eww", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1692410823, + "narHash": "sha256-YM1QCenpghNqgleUmoCJUArTuMEBqScyQuhepA6JZaI=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "598b2f04ed252eb5808b108d7a10084c0c548753", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "wlroots": { + "flake": false, + "locked": { + "host": "gitlab.freedesktop.org", + "lastModified": 1695277534, + "narHash": "sha256-LEIUGXvKR5DYFQUTavC3yifcObvG4XZUUHfxXmu8nEM=", + "owner": "wlroots", + "repo": "wlroots", + "rev": "98a745d926d8048bc30aef11b421df207a01c279", + "type": "gitlab" + }, + "original": { + "host": "gitlab.freedesktop.org", + "owner": "wlroots", + "repo": "wlroots", + "rev": "98a745d926d8048bc30aef11b421df207a01c279", + "type": "gitlab" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1694628480, + "narHash": "sha256-Qg9hstRw0pvjGu5hStkr2UX1D73RYcQ9Ns/KnZMIm9w=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "8f45a6435069b9e24ebd3160eda736d7a391cbf2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nixos/flake.nix b/nixos/flake.nix new file mode 100644 index 0000000..cee38a4 --- /dev/null +++ b/nixos/flake.nix @@ -0,0 +1,39 @@ +{ + description = "GockOS desktop configuration"; + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager.url = "github:nix-community/home-manager"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + hyprland.url = "github:hyprwm/Hyprland"; + hyprland-contrib.url = "github:hyprwm/contrib"; + eww.url = "github:ralismark/eww/tray-3"; + emacs-overlay.url = "github:nix-community/emacs-overlay/"; + }; + + outputs = { nixpkgs, home-manager, hyprland, emacs-overlay, eww, ...} @inputs: { + nixosConfigurations = { + giacomino = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs;}; + modules = [ + ./configuration/configuration-giacomino.nix + home-manager.nixosModules.home-manager { + home-manager.users.ale = import ./home-manager/ale-laptop.nix; + } + ]; + }; + + caketray = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + modules = [ + ./configuration/configuration-caketray.nix + home-manager.nixosModules.home-manager + { + home-manager.extraSpecialArgs = {inherit inputs;}; + home-manager.users.alecake = import ./home-manager/alecake.nix; + } + ]; + }; + }; + + }; +} diff --git a/nixos/hardware/hardware-caketray.nix b/nixos/hardware/hardware-caketray.nix new file mode 100644 index 0000000..f06efda --- /dev/null +++ b/nixos/hardware/hardware-caketray.nix @@ -0,0 +1,82 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + hardware.opengl = { + enable = true; + driSupport = true; + driSupport32Bit = true; + extraPackages = with pkgs; [ + vaapiVdpau + libvdpau-va-gl + nvidia-vaapi-driver + ]; + }; + services.xserver.videoDrivers = ["nvidia"]; + services.blueman.enable = true; + hardware.bluetooth.enable = true; + hardware.steam-hardware.enable = true; + hardware.opentabletdriver.enable = true; + hardware.enableAllFirmware = true; + hardware.enableRedistributableFirmware = true; + + hardware.nvidia = { + + # Modesetting is needed for most Wayland compositors + modesetting.enable = true; + + # Use the open source version of the kernel module + # Only available on driver 515.43.04+ + open = false; + + # Enable the nvidia settings menu + nvidiaSettings = true; + + # Optionally, you may need to select the appropriate driver version for your specific GPU. + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/66b10c7e-0cfd-491e-8ccd-6da9c74ea668"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + fileSystems."/boot" = + { + device = "/dev/disk/by-uuid/16A6-6E9C"; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/3acb0c54-c290-41d1-84bf-87d13ec8da5f"; + fsType = "btrfs"; + }; + fileSystems."/home/alecake/.local/share/flatpak" = + { device = "/dev/disk/by-uuid/78a8ad10-b47d-4848-9056-f180747112e3"; + fsType = "ext4"; + }; + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp3s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + powerManagement.cpuFreqGovernor = lib.mkDefault "performance"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/hardware/hardware-giacomino.nix b/nixos/hardware/hardware-giacomino.nix new file mode 100644 index 0000000..234da8c --- /dev/null +++ b/nixos/hardware/hardware-giacomino.nix @@ -0,0 +1,38 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "usb_storage" "sd_mod" "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/c1c88858-892b-4087-9497-03489576179b"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/F048-E26A"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s21f0u2.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/home-manager/ale-laptop.nix b/nixos/home-manager/ale-laptop.nix new file mode 100644 index 0000000..3dc2d3f --- /dev/null +++ b/nixos/home-manager/ale-laptop.nix @@ -0,0 +1,174 @@ +{config, pkgs, ...}: + +{ + home.username = "ale"; + home.homeDirectory = "/home/ale"; + nixpkgs.config.allowUnfree = false; + + xdg.enable = true; # Let's home-manager manage xdg variables + + home.packages = [ + pkgs.btop + pkgs.hyfetch + pkgs.distrobox + + pkgs.rofi-wayland + pkgs.waybar + pkgs.swaybg + + pkgs.paper-icon-theme + pkgs.adw-gtk3 + ]; + + programs.fish = { # feeeeesh configs uwu + enable = true; + interactiveShellInit = " + set fish_greeting + ${pkgs.starship}/bin/starship init fish | source + "; + }; + + programs.starship = { + enable = true; + settings = { + character.success_symbol = "[➜](bold green)"; + directory.read_only = " 🥺"; + format = "$directory$git_branch \n$character"; + + }; + }; + + wayland.windowManager.sway = { + enable = true; + config = { + terminal = "alacritty"; + window.border = 1; + colors.focused = { + background = "#282828"; + text = "#d3869b"; + childBorder = "#d3869b"; + indicator = "b16286"; + border = "#d3869b"; + }; + gaps = { + inner = 10; + }; + bars = []; + startup = [ + { command = "waybar"; } + { command = "swaybg -i ~/Pictures/wallgockers/lain.png";} + ]; + window.titlebar = false; + keybindings = { + "Ctrl+Alt+1" = "workspace 1"; + "Ctrl+Alt+2" = "workspace 2"; + "Ctrl+Alt+3" = "workspace 3"; + "Ctrl+Alt+4" = "workspace 4"; + + "Ctrl+Alt+Shift+1" = "move container to workspace 1"; + "Ctrl+Alt+Shift+2" = "move container to workspace 2"; + "Ctrl+Alt+Shift+3" = "move container to workspace 3"; + "Ctrl+Alt+Shift+4" = "move container to workspace 4"; + + "mod4+f" = "fullscreen"; + "Ctrl+Alt+f" = "floating toggle"; + + "Ctrl+Alt+w" = "kill"; + "Ctrl+Alt+Shift+c" = "reload"; + "mod4+Return" = "exec alacritty"; + "mod1+Space" = "exec rofi -show drun"; + }; + input = { + "*" = { + xkb_layout = "it"; + "natural_scroll" = "enabled"; + }; + }; + }; + }; + + programs.waybar = { + enable = true; + package = pkgs.waybar; + settings = { + bar = { + layer = "top"; + position = "top"; + height = 24; + + modules-left = ["sway/workspaces"]; + modules-center = ["sway/window"]; + modules-right = ["pulseaudio" "battery" "clock"]; + + pulseaudio = { + format = "v: {volume}%"; + }; + + battery = { + format = "b: {capacity}%"; + }; + + }; + }; + style = " + * { + font-family: jetbrains mono; + background-color: #282828; + color: #ebdbb2; + } + + #workspaces button, #workspaces button:hover { + border: none; + border-radius : unset; + background: unset; + } + + #workspaces button.focused { + color: #d3869b; + } + #battery { + padding-left: 10px; + padding-right: 10px; + background-color: #504945; + } + + #clock { + padding-left: 10px; + padding-right: 10px; + background-color: #3c3836; + } + + #pulseaudio { + padding-left: 10px; + padding-right: 10px; + background-color: #665c54; + } + + "; + }; + + services.mako = { + enable = true; + }; + + # the trans is real + programs.hyfetch = { + enable = true; + settings = { + preset = "transgender"; + mode = "rgb"; + color_align = { + mode = "horizontal"; + }; + }; + }; + + programs.vscode = { + enable = true; + package = pkgs.vscodium; + }; + + # no touchy, things go breaky + home.stateVersion = "23.05"; + +} diff --git a/nixos/home-manager/alecake.nix b/nixos/home-manager/alecake.nix new file mode 100644 index 0000000..c902ffe --- /dev/null +++ b/nixos/home-manager/alecake.nix @@ -0,0 +1,533 @@ +{ inputs, config, pkgs, ... }: + +{ + home.username = "alecake"; + home.homeDirectory = "/home/alecake"; + nixpkgs.config.allowUnfree = true; + + imports = [ + ./programs/emacs/emacs.nix + ]; + + nixpkgs.overlays = [ + (import inputs.emacs-overlay) + (final: prev:{emacs-unstable-pgtk = prev.emacs-unstable.override { withGTK3 = true; withTreeSitter = true; withNativeCompilation = true;};}) + ]; + nixpkgs.config.permittedInsecurePackages = [ + "imagemagick-6.9.12-68" + ]; + # Lets home-manager manage xdg stuff uwu + xdg = { + enable = true; + userDirs.enable = true; + }; + + home.sessionVariables = { + EDITOR = "emacs --no-window-system"; + NODE_REPL_HISTORY = ""; + }; + + home.shellAliases = { + ls = "eza --icons --hyperlink -w=60"; + }; + + home.packages = [ + pkgs.btop + pkgs.hyfetch + pkgs.distrobox + pkgs.neovim + pkgs.fzf + pkgs.eza + pkgs.scrcpy + + pkgs.emacs-unstable-pgtk + + pkgs.multimarkdown + pkgs.pandoc + + pkgs.unzip + pkgs.zip + + #pkgs.ulauncher + #pkgs.swww + #inputs.eww.packages.x86_64-linux.eww-wayland + pkgs.xdg_utils + #inputs.hyprland-contrib.packages.x86_64-linux.grimblast + + pkgs.appimage-run + pkgs.swaynotificationcenter + + pkgs.gnome.adwaita-icon-theme + #pkgs.libsForQt5.qtstyleplugin-kvantum + + pkgs.jetbrains.idea-community + pkgs.gnome.nautilus + pkgs.nextcloud-client + pkgs.yubikey-personalization-gui + + ]; + + programs.fish = { # feeeeesh configs uwu + enable = true; + package = pkgs.fish; + interactiveShellInit = " + set fish_greeting + ${pkgs.starship}/bin/starship init fish | source + "; + + plugins = [ + {name = "fzf-fish"; src = pkgs.fishPlugins.fzf-fish;} + ]; + }; + + programs.starship = { + enable = true; + enableNushellIntegration = true; + settings = { + character.success_symbol = "[➜](bold green)"; + directory.read_only = " 🥺"; + format = "$directory$git_branch \n$character"; + }; + }; + + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; + + wayland.windowManager.sway = { + enable = true; + package = pkgs.sway; + config = { + terminal = "alacritty"; + window.border = 1; + colors.focused = { + background = "#282828"; + text = "#d3869b"; + childBorder = "#d3869b"; + indicator = "b16286"; + border = "#d3869b"; + }; + gaps = { + inner = 10; + }; + bars = []; + startup = [ + { command = "eww daemon";} + { command = "eww open bar"; } + { command = "swww init";} + { command = "swww img --transition-type wipe Pictures/wallpapers/night/BNAWall-10240x5760-upscaled.png";} + ]; + window.titlebar = false; + keybindings = { + "Ctrl+Alt+1" = "workspace 1"; + "Ctrl+Alt+2" = "workspace 2"; + "Ctrl+Alt+3" = "workspace 3"; + "Ctrl+Alt+4" = "workspace 4"; + "Ctrl+Alt+5" = "workspace 5"; + "Ctrl+Alt+6" = "workspace 6"; + "Ctrl+Alt+7" = "workspace 7"; + + + "Ctrl+Alt+Shift+1" = "move container to workspace 1"; + "Ctrl+Alt+Shift+2" = "move container to workspace 2"; + "Ctrl+Alt+Shift+3" = "move container to workspace 3"; + "Ctrl+Alt+Shift+4" = "move container to workspace 4"; + + "mod4+f" = "fullscreen"; + "Ctrl+Alt+f" = "floating toggle"; + + "Ctrl+Alt+mod4+w" = "kill"; + "Ctrl+Alt+Shift+c" = "reload"; + "mod4+Return" = "exec alacritty"; + "mod1+Space" = "exec ulauncher toggle"; + }; + input = { + "*" = { + xkb_layout = "it"; + "natural_scroll" = "enabled"; + }; + }; + }; + }; + + + wayland.windowManager.hyprland = { + enable = false; + enableNvidiaPatches = true; + xwayland.enable = true; + package = inputs.hyprland.packages.x86_64-linux.hyprland; + extraConfig ='' + env = WLR_NO_HARDWARE_CURSORS,1 + env = XDG_SESSION_TYPE,wayland + env = LIBVA_DRIVER_NAME,nvidia + env = GBM_BACKEND,nvidia-drm + env = __GLX_VENDOR_LIBRARY_NAME,nvidia + env = NIXOS_OZONE_WL,1 + env = XDG_CURRENT_DESKTOP,hyprland + + exec-once = eww open bar + exec-once = ulauncher + exec-once = swaync + exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP + exec-once = swww init + + monitor=HDMI-A-2, 1920x1080@75, 1920x0, 1 + monitor=HDMI-A-1, 1920x1080@75, 0x0, 1 + workspace = 1, monitor:HDMI-A-2 + workspace = 2, monitor:HDMI-A-2 + workspace = 3, monitor:HDMI-A-2 + workspace = 4, monitor:HDMI-A-2 + workspace = 5, monitor:HDMI-A-2 + workspace = 6, monitor:HDMI-A-2 + workspace = 7, monitor:HDMI-A-2 + workspace = 8, monitor:HDMI-A-2 + workspace = 9, monitor:HDMI-A-1, default:true + + # telegram media viewer + windowrulev2 = float, title:^(Media viewer)$ + + # make Firefox PiP window floating and sticky + windowrulev2 = float, title:^(Picture-in-Picture)$ + windowrulev2 = pin, title:^(Picture-in-Picture)$ + + # throw sharing indicators away + windowrulev2 = workspace special silent, title:^(Firefox — Sharing Indicator)$ + windowrulev2 = workspace special silent, title:^(.*is sharing (your screen|a window)\.)$ + + windowrulev2 = noblur, title:^(Ulauncher - Application Launcher)$ + windowrulev2 = noborder, title:^(Ulauncher - Application Launcher)$ + windowrulev2 = noanim, title:^(Ulauncher - Application Launcher)$ + windowrulev2 = noshadow, title:^(Ulauncher - Application Launcher)$ + windowrulev2 = stayfocused, title:^(Ulauncher - Application Launcher)$ + + bindm = SUPER, mouse:272, movewindow + bindm = SUPER, mouse:273, resizewindow + bindm = SUPER, mouse:274, movewindow + general { + col.active_border=rgb(ff79c6) + } + ''; + settings = { + input = { + kb_layout = "it"; + left_handed = true; + }; + + bind = [ + "SUPER, RETURN, exec, alacritty" + + "CTRL_ALT, 1, workspace, 1" + "CTRL_ALT, 2, workspace, 2" + "CTRL_ALT, 3, workspace, 3" + "CTRL_ALT, 4, workspace, 4" + "CTRL_ALT, 5, workspace, 5" + "CTRL_ALT, 6, workspace, 6" + "CTRL_ALT, 7, workspace, 7" + "CTRL_ALT, 8, workspace, 8" + "CTRL_ALT, 9, workspace, 9" + + "CTRL_ALT_SHIFT, 1, movetoworkspace, 1" + "CTRL_ALT_SHIFT, 2, movetoworkspace, 2" + "CTRL_ALT_SHIFT, 3, movetoworkspace, 3" + "CTRL_ALT_SHIFT, 4, movetoworkspace, 4" + "CTRL_ALT_SHIFT, 5, movetoworkspace, 5" + "CTRL_ALT_SHIFT, 6, movetoworkspace, 6" + "CTRL_ALT_SHIFT, 7, movetoworkspace, 7" + "CTRL_ALT:SHIFT, 8, movetoworkspace, 8" + "CTRL_ALT_SHIFT, 9, movetoworkspace, 9" + + "SUPER,left,movewindow,l" + "SUPER,right,movewindow,r" + "SUPER,up,movewindow,u" + "SUPER,up,movewindow,d" + + "Shift, Print, exec, grim" + ", Print, exec, grimblast copysave area" + + "CTRL_ALT, W, killactive" + "CTRL_ALT, F, togglefloating" + "ALT, Tab, cyclenext" + + "ALT,SPACE, exec, ulauncher-toggle" + ]; + }; + }; + + programs.waybar = { + enable = false; + package = pkgs.waybar; + settings = { + bar = { + layer = "top"; + position = "top"; + output = "HDMI-A-2"; + height = 24; + + modules-left = ["wlr/workspaces"]; + modules-center = ["hyprland/window"]; + modules-right = [ "tray" "custom/notification" "pulseaudio" "clock" ]; + + pulseaudio = { + format = "v: {volume}%"; + }; + + battery = { + format = "b: {capacity}%"; + }; + + "custom/notification" = { + tooltip = false; + format = "{icon}"; + format-icons = { + notification = "notif"; + none = "no-notif"; + dnd-notification = "notif"; + dnd-none = "no-notif"; + }; + + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "swaync-client -t -sw"; + escape = true; + }; + }; + }; + style = " + * { + font-family: jetbrains mono; + background-color: #282a36; + color: #f8f8f2; + } + #workspaces button, #workspaces button:hover { + border: none; + border-radius : unset; + background: unset; + } + + #workspaces button.focused { + color: #6272a4; + } + #pulseaudio { + padding-left: 10px; + padding-right: 10px; + background-color: #44475a; + } + + #clock { + padding-left: 10px; + padding-right: 10px; + background-color: #3b3e54; + } + + #tray, #tray > .passive, #tray > .needs-attention { + padding-left: 10px; + padding-right: 10px; + } + + #custom-notification { + padding-left: 10px; + padding-right: 10px; + background: #545769; + } + + "; + }; + + programs.alacritty = { + enable = true; + package = pkgs.alacritty; + settings = { + window.padding.x = 0; + window.padding.y = 0; + colors.primary = { + background = "#282a36"; + foreground = "#f8f8f2"; + bright_foreground = "#ffffff"; + }; + colors.cursor = { + text = "CellBackground"; + cursor = "CellForeground"; + }; + colors.selection = { + text = "CellForeground"; + background = "#44475a"; + }; + colors.normal = { + black = "#21222c"; + red = "#ff5555"; + green = "#f1fa8c"; + blue = "#bd93f9"; + magenta = "#ff79c6"; + cyan = "#8be9fd"; + white = "#f8f8f2"; + }; + }; + }; + + programs.swaylock = { + enable = false; + package = pkgs.swaylock-effects; + settings = { + effect-blur = "20x2"; + clock = true; + indicator = true; + font-size = 25; + indicator-radius = 85; + indicator-thickness = 16; + screenshots = true; + ring-color = "bd93f9"; + key-hl-color = "ff79c6"; + }; + }; + + services.mako = { + enable = false; + package = pkgs.mako; + backgroundColor = "#282a36"; + borderColor = "#ff79c6"; + font = "jetbrains-mono 10"; + }; + + # the trans is real + programs.hyfetch = { + enable = true; + settings = { + preset = "transgender"; + mode = "rgb"; + color_align = { + mode = "horizontal"; + }; + }; + }; + + programs.vscode = { + enable = true; + package = pkgs.vscode; + }; + + programs.git = { + enable = true; + package = pkgs.git; + userName = "Ale"; + userEmail = "alecake@ale.pet"; + signing = { + key = "1E390257057001A9AB814492284AFB134BB2E07D"; + signByDefault = true; + }; + }; + + programs.helix = { + enable = true; + package = pkgs.helix; + settings.theme = "dracula"; + settings.editor.bufferline = "multiple"; + }; + + gtk = { + enable = false; + theme = { + name = "adw-gtk3-dark"; + package = pkgs.adw-gtk3; + }; + iconTheme = { + name = "Papirus"; + package = pkgs.papirus-icon-theme; + }; + }; + + home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + size = 24; + package = pkgs.hackneyed; + name = "Hackneyed"; + }; + + home.file."/home/alecake/.config/swaync/config.json".text = + " + { + \"positionX\": \"right\", + \"positionY\": \"top\", + \"layer\": \"overlay\", + \"control-center-layer\": \"top\", + \"layer-shell\": \"true\", + \"cssPriority\": \"user\", + \"notification-window-width\": 300, + + \"widgets\": [ + \"notifications\", + \"dnd\", + \"mpris\" + ], + + \"notification-visibily\": { + \"telegram-desktop\": { + \"_comment\": \"Show telegram-desktop messages\", + \"override-urgency\": \"normal\", + \"desktop-entry\": \"org.telegram.desktop\" + } + } + } + "; + home.file."/home/alecake/.config/swaync/style.css".text = + " + .notification-default-action, .notification-action { + background-color: #282a36; + font-family: jetbrains mono; + border-radius: unset; + + border-width: 1px; + border-color: #ff79c6; + border-style: solid; + } + + .notification-action { + margin-top: 5px; + } + + .control-center{ + background-color: #44475a; + } + + .notification { + box-shadow : unset; + } + + .notification-row:focus { + background: unset; + } + + .widget-mpris, .widget-dnd { + background-color: #282a36; + margin: 0; + font-family: jetbrains mono; + } + + .widget-dnd { + padding: 8px; + padding-left: 16px; + padding-right: 16px; + } + + .widget-dnd > switch { + border-radius: unset; + background: unset; + background: #44475a; + padding: 2px; + } + + .widget-dnd > switch slider { + border-radius: unset; + background: #bd93f9; + } + + .widget-dnd > switch:checked slider { + background: #ff79c6; + } + + "; + + home.stateVersion = "23.05"; +} diff --git a/nixos/home-manager/programs/emacs/emacs.nix b/nixos/home-manager/programs/emacs/emacs.nix new file mode 100644 index 0000000..60e2f43 --- /dev/null +++ b/nixos/home-manager/programs/emacs/emacs.nix @@ -0,0 +1,137 @@ +{pkgs, ...}: + +{ + xdg.configFile."emacs/init.el".text = '' + (setq gc-cons-threshold most-positive-fixnum) + (add-hook 'emacs-startup-hook + (lambda () + (setq gc-cons-threshold (expt 2 23)))) + + ;; Install straight.el + (defvar bootstrap-version) + (let ((bootstrap-file + (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) + (bootstrap-version 6)) + (unless (file-exists-p bootstrap-file) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + (load bootstrap-file nil 'nomessage)) + + (straight-use-package 'use-package) + + (when (fboundp 'windmove-default-keybindings) + (windmove-default-keybindings)) + + (use-package straight + :custom + (straight-use-package-by-default t)) + + (use-package evil) + (use-package doom-themes + :config + (load-theme 'doom-dracula t)) + (use-package doom-modeline) + (use-package dashboard) + (use-package nerd-icons) + (use-package all-the-icons + :if (display-graphic-p)) + + (use-package hl-indent-scope) + + (use-package centaur-tabs + :demand + :config + (centaur-tabs-mode t) + :custom + (centaur-tabs-style "box") + (centaur-tabs-set-bar 'under) + (centaur-tabs-set-icons t) + + (centaur-tabs-height 32) + (centaur-tabs-set-modified-marker t) + (centaur-tabs-cycle-scope 'tabs) + :bind + ("C-" . centaur-tabs-forward) + ("C-" . centaur-tabs-backward)) + + (use-package dashboard) + (use-package envrc) + + (use-package lsp-ui + :custom (lsp-ui-sideline-show-diagnostics t)) + (use-package lsp-mode + :custom + (lsp-headerline-breadcrumb-enable nil)) + + (use-package nix-mode :mode "\\.nix\\'") + (use-package rust-mode) + (use-package lua-mode) + (use-package typescript-mode) + (use-package astro-ts-mode) + (use-package js2-mode) + (use-package svelte-mode) + (use-package lsp-java) + (use-package markdown-mode + :ensure t) + + (envrc-global-mode) + + (use-package company) + (use-package flycheck :ensure t :init (global-flycheck-mode)) + (use-package treesit-auto + :demand t + :config + (global-treesit-auto-mode)) + + (require 'treesit) + (setq treesit-font-lock-settings t) + (add-to-list 'major-mode-remap-alist '(typescript-mode . typescript-ts-mode)) + + (setq treesit-language-source-alist + '((astro "https://github.com/virchau13/tree-sitter-astro") + (css "https://github.com/tree-sitter/tree-sitter-css") + (tsx "https://github.com/tree-sitter/tree-sitter-typescript" "master" "tsx/src"))) + + (set-face-attribute 'default nil :font "victor mono" :height 120) + + (tool-bar-mode -1) + (menu-bar-mode -1) + (scroll-bar-mode -1) + (display-line-numbers-mode 1) + + (doom-modeline-mode 1) + (evil-mode 1) + + (add-hook 'after-init-hook 'global-company-mode) + + (dashboard-setup-startup-hook) + (centaur-tabs-headline-match) + + + (setq x-underline-at-descent-line t) + (setq dashboard-banner-logo-title "Gock and Gum") + (setq inhibit-splash-screen t) + (setq warning-minimum-level :error) + + (setq org-startup-with-inline-images t) + (setq org-startup-indented t) + (setq org-pretty-entities t) + + (setq dashboard-startup-banner nil) + (setq doom-modeline-height 25) + (setq backup-directory-alist '(("." . "~/.config/emacs/backup"))) + + ;; No more typing the whole yes or no. Just y or n will do. + (fset 'yes-or-no-p 'y-or-n-p) + + (evil-ex-define-cmd "q" 'kill-current-buffer) + (defun kill-this-buffer()(interactive)(kill-current-buffer)) + + (evil-ex-define-cmd "wq" 'save-and-kill-this-buffer) + (defun save-and-kill-this-buffer()(interactive)(save-buffer)(kill-current-buffer)) + ''; +} diff --git a/nixos/home-manager/programs/emacs/emacs.nix~ b/nixos/home-manager/programs/emacs/emacs.nix~ new file mode 100644 index 0000000..a74fcb8 --- /dev/null +++ b/nixos/home-manager/programs/emacs/emacs.nix~ @@ -0,0 +1,20 @@ +{pkgs, ...}: + +{ + xdg.configFile."emacs/init.el".text = '' + (require 'package) + (setq 'package-archives '("melpa" . "https://melpa.org/packages/")) + (package-initialize) + + + ;; Download Evil + (unless (package-installed-p 'evil) + (package-install 'evil)) + + ;; Enable Evil + (require 'evil) + (evil-mode 1) + + (setq inhibit-startup-message t) + ''; +} \ No newline at end of file diff --git a/nixos/home-manager/programs/neovim/config.lua b/nixos/home-manager/programs/neovim/config.lua new file mode 100644 index 0000000..6c3b3a5 --- /dev/null +++ b/nixos/home-manager/programs/neovim/config.lua @@ -0,0 +1,5 @@ +require("indent_blankline").setup { + -- for example, context is off by default, use this to turn it on + show_current_context = true, + show_current_context_start = true, +} diff --git a/nixos/home-manager/programs/neovim/neovim.nix b/nixos/home-manager/programs/neovim/neovim.nix new file mode 100644 index 0000000..e1f9f8d --- /dev/null +++ b/nixos/home-manager/programs/neovim/neovim.nix @@ -0,0 +1,7 @@ +{ pkgs, config, lib, ...}: + +{ + programs.neovim = { + enable= true; + }; +} diff --git a/starship/starship.toml b/starship/starship.toml new file mode 100644 index 0000000..e69de29