From 8cbadb61604667b407b53ee1258433994fa4765a Mon Sep 17 00:00:00 2001 From: coasteen Date: Thu, 9 Jul 2026 10:42:28 +0330 Subject: init --- nixos/configuration/configuration.nix | 132 ++++++++++++++++++++ .../configuration/sys/coreutils-configuration.nix | 48 ++++++++ nixos/configuration/sys/swap.nix | 11 ++ nixos/configuration/sys/zram.nix | 10 ++ nixos/flake.lock | 135 +++++++++++++++++++++ nixos/flake.nix | 56 +++++++++ nixos/home-configuration/apps/alacritty.nix | 28 +++++ nixos/home-configuration/apps/foot.nix | 31 +++++ nixos/home-configuration/apps/nushell.nix | 13 ++ nixos/home-configuration/apps/sway.nix | 111 +++++++++++++++++ nixos/home-configuration/apps/zsh.nix | 59 +++++++++ nixos/home-configuration/configuration.nix | 99 +++++++++++++++ 12 files changed, 733 insertions(+) create mode 100755 nixos/configuration/configuration.nix create mode 100755 nixos/configuration/sys/coreutils-configuration.nix create mode 100755 nixos/configuration/sys/swap.nix create mode 100755 nixos/configuration/sys/zram.nix create mode 100755 nixos/flake.lock create mode 100755 nixos/flake.nix create mode 100755 nixos/home-configuration/apps/alacritty.nix create mode 100755 nixos/home-configuration/apps/foot.nix create mode 100755 nixos/home-configuration/apps/nushell.nix create mode 100755 nixos/home-configuration/apps/sway.nix create mode 100755 nixos/home-configuration/apps/zsh.nix create mode 100755 nixos/home-configuration/configuration.nix (limited to 'nixos') diff --git a/nixos/configuration/configuration.nix b/nixos/configuration/configuration.nix new file mode 100755 index 0000000..428f073 --- /dev/null +++ b/nixos/configuration/configuration.nix @@ -0,0 +1,132 @@ +{ + pkgs, + pkgsUnstable, + ... +}: let + unstable = pkgsUnstable; +in +{ + services = { + xserver = { + enable = true; + videoDrivers = ["modesetting" "nvidia"]; + }; + displayManager.ly.enable = true; + blueman.enable = false; + printing.enable = false; + pipewire = { + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + }; + security.rtkit.enable = true; + + boot = { + readOnlyNixStore = true; + initrd.compressor = "zstd"; + loader = { + systemd-boot = { + enable = true; + editor = false; + configurationLimit = 25; + }; + efi.canTouchEfiVariables = true; + }; + kernelParams = [ + "nvidia_drm" + "nvidia_modeset" + "nvidia_uvm" + "nvidia-drm.fbdev=1" + "nvidia" + ]; + }; + + networking.hostName = "gloria"; + networking.enableIPv6 = false; + networking.networkmanager.enable = true; + time.timeZone = "Asia/Tehran"; + + hardware = { + graphics.enable = true; + nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + open = false; + nvidiaSettings = true; + package = pkgs.linuxPackages.nvidiaPackages.beta; + prime.offload = { + enable = true; + enableOffloadCmd = true; + }; + prime = { + intelBusId = "PCI:0:2:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + }; + bluetooth.enable = true; + bluetooth.powerOnBoot = true; + }; + + security.sudo.enable = false; + security.sudo-rs.enable = true; + + virtualisation = { + podman.enable = true; + }; + + environment.systemPackages = with pkgs; [ + (pkgs.runCommand "vim-wrapper" { } '' + mkdir -p $out/bin + ln -s ${pkgs.neovim}/bin/nvim $out/bin/vim + '') + unstable.ungoogled-chromium + unstable.git + unstable.adwaita-icon-theme + unstable.nil + jmtpfs + android-tools + unstable.qbittorrent + unstable.zathura + unstable.rofi + ]; + + nixpkgs.config.allowUnfree = true; + + users.users.coast = { + isNormalUser = true; + extraGroups = [ "wheel" "podman" ]; + shell = pkgs.nushell; + }; + + programs = { + foot.enable = false; + nano.enable = false; + nekoray.enable = true; + nekoray.tunMode.enable = true; + niri.enable = true; + }; + + fonts.packages = with pkgs; [ + ubuntu-sans + ubuntu_font_family + nerd-fonts._0xproto + nerd-fonts.droid-sans-mono + nerd-fonts.jetbrains-mono + nerd-fonts.fira-code + vazir-fonts + ]; + + xdg.portal = { + enable = true; + xdgOpenUsePortal = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + xdg-desktop-portal-gnome + ]; + }; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + services.openssh.enable = true; + system.stateVersion = "25.05"; +} diff --git a/nixos/configuration/sys/coreutils-configuration.nix b/nixos/configuration/sys/coreutils-configuration.nix new file mode 100755 index 0000000..9532a3e --- /dev/null +++ b/nixos/configuration/sys/coreutils-configuration.nix @@ -0,0 +1,48 @@ +{ + pkgs, + ... +}: let + coreutils-full-name = "coreuutils-full" + builtins.concatStringsSep "" + (builtins.genList (_: "_") (builtins.stringLength pkgs.coreutils-full.version)); + + coreutils-name = "coreuutils" + builtins.concatStringsSep "" + (builtins.genList (_: "_") (builtins.stringLength pkgs.coreutils.version)); + + findutils-name = "finduutils" + builtins.concatStringsSep "" + (builtins.genList (_: "_") (builtins.stringLength pkgs.findutils.version)); + + diffutils-name = "diffuutils" + builtins.concatStringsSep "" + (builtins.genList (_: "_") (builtins.stringLength pkgs.diffutils.version)); +in +{ + system.replaceDependencies.replacements = [ + { + oldDependency = pkgs.coreutils-full; + newDependency = pkgs.symlinkJoin { + name = coreutils-full-name; + paths = [pkgs.uutils-coreutils-noprefix]; + }; + } + { + oldDependency = pkgs.coreutils; + newDependency = pkgs.symlinkJoin { + name = coreutils-name; + paths = [pkgs.uutils-coreutils-noprefix]; + }; + } + { + oldDependency = pkgs.findutils; + newDependency = pkgs.symlinkJoin { + name = findutils-name; + paths = [pkgs.uutils-findutils]; + }; + } + { + oldDependency = pkgs.diffutils; + newDependency = pkgs.symlinkJoin { + name = diffutils-name; + paths = [pkgs.uutils-diffutils]; + }; + } + ]; +} diff --git a/nixos/configuration/sys/swap.nix b/nixos/configuration/sys/swap.nix new file mode 100755 index 0000000..72cba4f --- /dev/null +++ b/nixos/configuration/sys/swap.nix @@ -0,0 +1,11 @@ +{ + ... +}: +{ + swapDevices = [ + { + device = "/var/lib/swapfile"; + size = 12*1024; + } + ]; +} diff --git a/nixos/configuration/sys/zram.nix b/nixos/configuration/sys/zram.nix new file mode 100755 index 0000000..8e7037d --- /dev/null +++ b/nixos/configuration/sys/zram.nix @@ -0,0 +1,10 @@ +{ + config, + ... +}: +{ + zramSwap = { + enable = true; + writebackDevice = "/dev/nvme0n1p3"; + }; +} diff --git a/nixos/flake.lock b/nixos/flake.lock new file mode 100755 index 0000000..d01b11f --- /dev/null +++ b/nixos/flake.lock @@ -0,0 +1,135 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1758463745, + "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.05", + "repo": "home-manager", + "type": "github" + } + }, + "intelfetch": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1762005542, + "narHash": "sha256-oFE6raeSV/37OJUbR4F1/iqJR23Hij4jccv/BgrDciU=", + "ref": "refs/heads/master", + "rev": "090578fae67055f39155f677e8079f8b47c26cca", + "revCount": 19, + "type": "git", + "url": "https://git.sr.ht/~coasteen/intelfetch" + }, + "original": { + "type": "git", + "url": "https://git.sr.ht/~coasteen/intelfetch" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1735563628, + "narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1761672384, + "narHash": "sha256-o9KF3DJL7g7iYMZq9SWgfS1BFlNbsm6xplRjVlOCkXI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "08dacfca559e1d7da38f3cf05f1f45ee9bfd213c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1761597516, + "narHash": "sha256-wxX7u6D2rpkJLWkZ2E932SIvDJW8+ON/0Yy8+a5vsDU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "daf6dc47aa4b44791372d6139ab7b25269184d55", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "intelfetch": "intelfetch", + "nixpkgs": "nixpkgs_2", + "nixpkgs-unstable": "nixpkgs-unstable" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nixos/flake.nix b/nixos/flake.nix new file mode 100755 index 0000000..b9c9114 --- /dev/null +++ b/nixos/flake.nix @@ -0,0 +1,56 @@ +{ + description = "Flake"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + intelfetch.url = "git+https://git.sr.ht/~coasteen/intelfetch"; + home-manager.url = "github:nix-community/home-manager/release-25.05"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { nixpkgs, nixpkgs-unstable, home-manager, intelfetch, ... }: let + system = "x86_64-linux"; + pkgs = import nixpkgs { + inherit system; + config = { allowUnfree = true; }; + }; + pkgsUnstable = import nixpkgs-unstable { inherit system; }; + in { + nixosConfigurations.gloria = nixpkgs.lib.nixosSystem { + inherit system; + + modules = [ + (import ./configuration/configuration.nix { inherit pkgs pkgsUnstable; }) + ./configuration/sys/coreutils-configuration.nix + ./configuration/sys/swap.nix + ./hardware-configuration.nix + + { + environment.systemPackages = [ + intelfetch.packages.${system}.intelfetch + ]; + } + + home-manager.nixosModules.home-manager { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "home-backup"; + + users.coast = { ... }: { + imports = [ + ./home-configuration/configuration.nix + ./home-configuration/apps/sway.nix + ./home-configuration/apps/zsh.nix + ./home-configuration/apps/nushell.nix + ./home-configuration/apps/alacritty.nix + ./home-configuration/apps/foot.nix + ]; + }; + }; + } + ]; + }; + }; +} diff --git a/nixos/home-configuration/apps/alacritty.nix b/nixos/home-configuration/apps/alacritty.nix new file mode 100755 index 0000000..8ce3197 --- /dev/null +++ b/nixos/home-configuration/apps/alacritty.nix @@ -0,0 +1,28 @@ +{ + pkgs, + config, + ... +}: +{ + programs.alacritty = { + enable = false; + theme = "gruvbox_dark"; + settings = { + window = { + opacity = 0.9; + padding = { + x = 2; + y = 2; + }; + blur = true; + }; + font = { + normal = { + family = "JetBrainsMono Nerd Font"; + style = "Regular"; + }; + size = 14; + }; + }; + }; +} diff --git a/nixos/home-configuration/apps/foot.nix b/nixos/home-configuration/apps/foot.nix new file mode 100755 index 0000000..6bbffda --- /dev/null +++ b/nixos/home-configuration/apps/foot.nix @@ -0,0 +1,31 @@ +{ + programs.foot = { + enable = true; + settings = { + main.font = "JetBrainsMono Nerd Font:size=14"; + main.pad = "4x4"; + scrollback.lines = 100000; + + colors.alpha = "0.9"; + colors.background = "191724"; + colors.foreground = "e0def4"; + colors.regular0 = "191724"; + colors.regular1 = "eb6f92"; + colors.regular2 = "9ccfd8"; + colors.regular3 = "f6c177"; + colors.regular4 = "31748f"; + colors.regular5 = "c4a7e7"; + colors.regular6 = "ebbcba"; + colors.regular7 = "e0def4"; + colors.bright0 = "6e6a86"; + colors.bright1 = "eb6f92"; + colors.bright2 = "9ccfd8"; + colors.bright3 = "f6c177"; + colors.bright4 = "31748f"; + colors.bright5 = "c4a7e7"; + colors.bright6 = "ebbcba"; + colors.bright7 = "e0def4"; + }; + }; +} + diff --git a/nixos/home-configuration/apps/nushell.nix b/nixos/home-configuration/apps/nushell.nix new file mode 100755 index 0000000..2d5d83a --- /dev/null +++ b/nixos/home-configuration/apps/nushell.nix @@ -0,0 +1,13 @@ +{ + pkgs, + config, + ... +}: +{ + programs = { + carapace = { + enable = true; + enableNushellIntegration = true; + }; + }; +} diff --git a/nixos/home-configuration/apps/sway.nix b/nixos/home-configuration/apps/sway.nix new file mode 100755 index 0000000..c5a2868 --- /dev/null +++ b/nixos/home-configuration/apps/sway.nix @@ -0,0 +1,111 @@ +{ + pkgs, + ... +}: let + left = "h"; + down = "j"; + up = "k"; + right = "l"; + + modifier = "Mod4"; + terminal = "${pkgs.foot}/bin/footclient"; + menu = "${pkgs.wmenu}/bin/wmenu-run"; +in +{ + wayland.windowManager.sway = { + enable = false; + wrapperFeatures.gtk = true; + extraConfig = '' + exec swaymsg workspace 1 + default_border pixel 2 + default_floating_border pixel 2 + for_window [class=".*"] border pixel 2 + + client.focused #F5C2E7 #6C7086 #C6D0F5 #6C7086 #6C7086 + client.focused_inactive #313244 #313244 #C6D0F5 #585B70 #313244 + client.unfocused #313244 #313244 #A6ADC8 #313244 #313244 + client.urgent #F38BA8 #6C7086 #FFFFFF #F38BA8 #6C7086 + + seat * xcursor_theme Adwaita 24 + + input * xkb_options caps:escape + ''; + config = { + modifier = "Mod4"; + gaps = { + inner = 8; + outer = 10; + }; + bars = []; + output.eDP-1.disable = ""; + keybindings = { + "${modifier}+Return" = "exec ${terminal}"; + "${modifier}+Shift+Return" = "exec ${menu} -l 10"; + "${modifier}+r" = "exec rofi -show drun"; + "${modifier}+s" = "kill"; + "${modifier}+Print" = "exec /home/coast/.local/src/local/bin/screenie-wlr"; + "${modifier}+1" = "workspace 1"; + "${modifier}+2" = "workspace 2"; + "${modifier}+3" = "workspace 3"; + "${modifier}+4" = "workspace 4"; + "${modifier}+5" = "workspace 5"; + "${modifier}+6" = "workspace 6"; + "${modifier}+7" = "workspace 7"; + "${modifier}+8" = "workspace 8"; + "${modifier}+9" = "workspace 9"; + "${modifier}+Shift+1" = "move container to workspace 1"; + "${modifier}+Shift+2" = "move container to workspace 2"; + "${modifier}+Shift+3" = "move container to workspace 3"; + "${modifier}+Shift+4" = "move container to workspace 4"; + "${modifier}+Shift+5" = "move container to workspace 5"; + "${modifier}+Shift+6" = "move container to workspace 6"; + "${modifier}+Shift+7" = "move container to workspace 7"; + "${modifier}+Shift+8" = "move container to workspace 8"; + "${modifier}+Shift+9" = "move container to workspace 9"; + "${modifier}+h" = "focus left"; + "${modifier}+j" = "focus down"; + "${modifier}+k" = "focus up"; + "${modifier}+l" = "focus right"; + "${modifier}+Shift+i" = "exec caja"; + "${modifier}+Shift+r" = "reload"; + "${modifier}+Shift+q" = "exit"; + "${modifier}+Shift+v" = "exec vesktop --ozone-platform=wayland"; + "${modifier}+Shift+p" = "exec /home/coast/.local/src/local/bin/setwall.py"; + "${modifier}+Shift+d" = "mode 'resize'"; + "${modifier}+space" = "floating toggle"; + + #lock the screen + "${modifier}+Shift+l" = "exec swaylock -c 000000"; + #layouts + "${modifier}+Shift+u" = "layout tabbed"; + "${modifier}+Shift+y" = "layout stacking"; + "${modifier}+Shift+t" = "layout toggle split"; + }; + modes = { + resize = { + ${right} = "resize shrink width 10 px"; + ${up} = "resize grow height 10 px"; + ${down} = "resize shrink height 10 px"; + ${left} = "resize grow width 10 px"; + + "Escape" = "mode default"; + "Return" = "mode default"; + }; + }; + startup = [ + { command = "swaybg -i /home/coast/Downloads/wall1.png -m fill"; always = true; } + { command = "waybar"; } + { command = "foot -s"; always = true; } + { command = "autotiling"; } + ]; + }; + }; + + services.swayidle = { + enable = true; + timeouts = [{ + timeout = 300; + command = "${pkgs.swaylock}/bin/swaylock --daemonize --color 000000"; + }]; + }; +} diff --git a/nixos/home-configuration/apps/zsh.nix b/nixos/home-configuration/apps/zsh.nix new file mode 100755 index 0000000..6eb6446 --- /dev/null +++ b/nixos/home-configuration/apps/zsh.nix @@ -0,0 +1,59 @@ +{ + config, + pkgs, + ... +}: +{ + programs.zsh = { + enable = false; + history = { + path = "/home/coast/.cache/zsh/history"; + size = 100000000; + save = 100000000; + append = true; + }; + enableCompletion = true; + shellAliases = { + nf = "neofetch"; + nrs = "sudo nixos-rebuild switch"; + emoji = "cat ~/.local/src/local/share/emoji | grep"; + ls = "ls --color=auto"; + smi = "nvidia-smi"; + battery = "sb-battery"; + weather = "curl wttr.in/masjedsoleyman"; + las = "ls"; + c = "clear"; + cear = "clear"; + ".." = "cd .."; + hotp = "htop"; + main = "man"; + mian = "man"; + mna = "man"; + delgen = "sudo nix-env --delete-generations old --profile /nix/var/nix/profiles/system"; + alsamixer = "alsamixer -c 0 --no-color"; + la = "ls --color=auto -la"; + sidp = "sudo"; + suod = "sudo"; + sduo = "sudo"; + sd = "sudo"; + fastfetch = "fastfetch --pipe false | uwuify.awk"; + }; + initContent = '' + autoload -U compinit + zstyle ':completion:*' menu select + zmodload zsh/complist + compinit + comp_options+=(globdots) + zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' + ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=12" + autoload -U colors && colors && setopt prompt_subst + source ~/.local/src/zsh.d/zsh-autosuggestions.zsh + export PATH="/usr/bin:$PATH" + export PATH="$HOME/.local/bin:$PATH" + EDITOR=vim + bindkey -e + PS1="[%n in %m %~] " + eval "$(starship init zsh)" + ''; + }; +} diff --git a/nixos/home-configuration/configuration.nix b/nixos/home-configuration/configuration.nix new file mode 100755 index 0000000..9df9ad0 --- /dev/null +++ b/nixos/home-configuration/configuration.nix @@ -0,0 +1,99 @@ +{ + config, + pkgs, + ... +}: let + dotDir = "${config.home.homeDirectory}/.local/src/config/"; + mkSl = path: config.lib.file.mkOutOfStoreSymlink path; + configs = { + kitty = "kitty"; + qtile = "qtile"; + mako = "mako"; + nvim = "nvim"; + eww = "eww"; + waybar = "waybar"; + rofi = "rofi"; + nushell = "nushell"; + niri = "niri"; + "starship.toml" = "starship.toml"; + }; +in { + xdg.configFile = builtins.mapAttrs (name: subpath: { + source = mkSl "${dotDir}/${subpath}"; + recursive = true; + }) configs; + + home = { + username = "coast"; + homeDirectory = "/home/coast"; + stateVersion = "25.05"; + packages = with pkgs; [ + alsa-utils + xwayland-satellite + nix-search-cli + fastfetch + lollypop + cmatrix + dysk + brightnessctl + ncurses + tree + xfce.ristretto + pyright + stylua + typescript-language-server + lua + vscode-langservers-extracted + swaylock + starship + gopls + lua-language-server + serve-d + wl-clipboard + appimage-run + libnotify + grim + slurp + yazi + nautilus + btop + nixpkgs-fmt + swww + wmenu + mako + nwg-look + xorg.xkill + xorg.xeyes + mpv + vesktop + wlr-randr + nodejs + clang_multi + gnumake + clang-tools + ruby_3_4 + pkg-config + dmd + dtools + rustup + python3 + python313Packages.pip + unzip + zip + go + gimp + waybar + glibc + man-pages + man-pages-posix + eww + ]; + }; + + programs.git = { + enable = true; + userEmail = "coasteen@proton.me"; + userName = "coast"; + }; + +} -- cgit v1.2.3