diff --git a/Satori/Hardware/graphicshit.nix b/Satori/Hardware/graphicshit.nix new file mode 100644 index 0000000..e86d7cf --- /dev/null +++ b/Satori/Hardware/graphicshit.nix @@ -0,0 +1,30 @@ +{lib, config, pkgs, ... }: +let + nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" '' + export __NV_PRIME_RENDER_OFFLOAD=1 + export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 + export __GLX_VENDOR_LIBRARY_NAME=nvidia + export __VK_LAYER_NV_optimus=NVIDIA_only + exec -a "$0" "$@" + ''; +in + { + environment.systemPackages = with pkgs; [ + nvidia-offload + ]; + hardware = { + opengl = { + driSupport32Bit = true; + #package = pkgs.mesa_drivers; + enable = true; + }; + nvidia = { + prime = { + offload = { enable = true; }; + intelBusId = "PCI:0:2:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + modesetting = { enable = true; }; + }; + }; + } diff --git a/Satori/Hardware/power.nix b/Satori/Hardware/power.nix new file mode 100644 index 0000000..49bb493 --- /dev/null +++ b/Satori/Hardware/power.nix @@ -0,0 +1,7 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + powerManagement = { + cpuFreqGovernor = lib.mkDefault "powersave"; + }; +} diff --git a/Satori/README.md b/Satori/README.md new file mode 100644 index 0000000..7599078 --- /dev/null +++ b/Satori/README.md @@ -0,0 +1 @@ +Satori is my home laptop diff --git a/Satori/Stuff/colemak-dh.xkb b/Satori/Stuff/colemak-dh.xkb new file mode 100644 index 0000000..da76fd6 --- /dev/null +++ b/Satori/Stuff/colemak-dh.xkb @@ -0,0 +1,62 @@ +xkb_keymap { + xkb_keycodes { include "evdev+aliases(qwerty)" }; + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_symbols + { + include "pc+us(colemak)+inet(evdev)+terminate(ctrl_alt_bksp)" + key { [ grave, asciitilde, dead_tilde, asciitilde ] }; + key { [ 1, exclam, exclamdown, onesuperior ] }; + key { [ 2, at, masculine, twosuperior ] }; + key { [ 3, numbersign, ordfeminine, threesuperior ] }; + key { [ 4, dollar, cent, sterling ] }; + key { [ 5, percent, EuroSign, yen ] }; + key { [ 6, asciicircum, hstroke, Hstroke ] }; + key { [ 7, ampersand, eth, ETH ] }; + key { [ 8, asterisk, thorn, THORN ] }; + key { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] }; + key { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ equal, plus, multiply, division ] }; + key { [ q, Q, adiaeresis, Adiaeresis ] }; + key { [ w, W, aring, Aring ] }; + key { [ f, F, atilde, Atilde ] }; + key { [ p, P, oslash, Ooblique ] }; + key { [ b, B, dead_breve, asciitilde ] }; + key { [ j, J, dstroke, Dstroke ] }; + key { [ l, L, lstroke, Lstroke ] }; + key { [ u, U, uacute, Uacute ] }; + key { [ y, Y, udiaeresis, Udiaeresis ] }; + key { [ semicolon, colon, odiaeresis, Odiaeresis ] }; + key { [ bracketleft, braceleft, guillemotleft, 0x1002039 ] }; + key { [ bracketright, braceright, guillemotright, 0x100203a ] }; + key { [ backslash, bar, asciitilde, asciitilde ] }; + key { [ a, A, aacute, Aacute ] }; + key { [ r, R, dead_grave, asciitilde ] }; + key { [ s, S, ssharp, asciitilde ] }; + key { [ t, T, dead_acute, dead_doubleacute ] }; + key { [ g, G, dead_ogonek, asciitilde ] }; + key { [ m, M, dead_macron, asciitilde ] }; + key { [ n, N, ntilde, Ntilde ] }; + key { [ e, E, eacute, Eacute ] }; + key { [ i, I, iacute, Iacute ] }; + key { [ o, O, oacute, Oacute ] }; + key { [ apostrophe, quotedbl, otilde, Otilde ] }; + key { [ z, Z, ae, AE ] }; + key { [ x, X, dead_circumflex, asciitilde ] }; + key { [ c, C, ccedilla, Ccedilla ] }; + key { [ d, D, dead_diaeresis, asciitilde ] }; + key { [ v, V, oe, OE ] }; + key { [ k, K, dead_abovering, asciitilde ] }; + key { [ h, H, dead_caron, asciitilde ] }; + key { [ comma, less, dead_cedilla, asciitilde ] }; + key { [ period, greater, dead_abovedot, asciitilde ] }; + key { [ slash, question, questiondown, asciitilde ] }; + key { [ Caps_Lock, Caps_Lock, Caps_Lock, Caps_Lock ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ space, space, space, nobreakspace ] }; + include "level3(ralt_switch)" + }; + + xkb_geometry { include "pc(pc104)" }; +}; diff --git a/Satori/Stuff/fonts.nix b/Satori/Stuff/fonts.nix new file mode 100644 index 0000000..c0b3caf --- /dev/null +++ b/Satori/Stuff/fonts.nix @@ -0,0 +1,10 @@ +{lib, config, pkgs, ... }: + +{ + fonts.fonts = with pkgs; [ + fira-mono + font-awesome-ttf + powerline-fonts + vistafonts + ]; +} diff --git a/Satori/Stuff/services.nix b/Satori/Stuff/services.nix new file mode 100644 index 0000000..9a03923 --- /dev/null +++ b/Satori/Stuff/services.nix @@ -0,0 +1,26 @@ +{lib, config, pkgs, ... }: + +{ + systemd.services.nbfc = { + wantedBy = [ "multi-user.target" ]; + description = "Notebook Fancontrol"; + serviceConfig = { + Type = "forking"; + Restart = "on-failure"; + ExecStart = "${pkgs.mono}/bin/mono-service -l:/run/nbfc.pid -m:NbfcService /opt/nbfc/NbfcService.exe"; + ExecStop = "kill -SIGTERM $(cat /run/nbfc.pid)"; + PIDFile = "/run/nbfc.pid"; + }; + }; + services = { + tor.enable = true; + logmein-hamachi.enable = true; + }; + # services.picom = { + # enable = true; + # fade = true; + # shadow = true; + # activeOpacity = 0.96; + # inactiveOpacity = 0.86; + # }; +} diff --git a/Satori/Stuff/sound.nix b/Satori/Stuff/sound.nix new file mode 100644 index 0000000..9882ab3 --- /dev/null +++ b/Satori/Stuff/sound.nix @@ -0,0 +1,33 @@ +{lib, config, pkgs, ... }: + +{ + services.pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + pulse = { + enable = true; + }; + config.pipewire = { + context.properties = { + default.clock.min-quantum = 8; + }; + }; + config.pipewire-pulse = { + context.modules = { + pulse.min.req = "4/48000"; + pulse.min.quantum = "4/24000"; + }; + stream.properties = { + node.latency = "4/24000"; + }; + }; + }; + sound.enable = true; +# hardware = { +# pulseaudio.enable = true; +# pulseaudio.support32Bit = true; +# }; +} diff --git a/Satori/Stuff/users.nix b/Satori/Stuff/users.nix new file mode 100644 index 0000000..ca6c0fb --- /dev/null +++ b/Satori/Stuff/users.nix @@ -0,0 +1,10 @@ +{lib, config, pkgs, ... }: + +{ + users.users.natto = { + isNormalUser = true; + shell = pkgs.fish; + home = "/home/natto"; + extraGroups = [ "wheel" "video" "audio" ]; + }; +} diff --git a/Satori/Stuff/xorg.nix b/Satori/Stuff/xorg.nix new file mode 100644 index 0000000..684d866 --- /dev/null +++ b/Satori/Stuff/xorg.nix @@ -0,0 +1,43 @@ + +{ config, lib, pkgs, modulesPath, ... }: + +#let +# compiledLayout = pkgs.runCommand "keyboard-layout" {} '' +# ${pkgs.xorg.xkbcomp}/bin/xkbcomp ${./colemak-dh.xkb} $out +# ''; +#in +{ + services = { + xserver = { + enable = true; + libinput= { + enable = true; + # mouse = { + # accelSpeed = "0"; + # }; + touchpad = { + middleEmulation = false; + clickMethod = "buttonareas"; + tapping = true; + naturalScrolling =true; + }; + }; + displayManager = { + startx = { + enable = true; + }; +# sessionCommands = "${pkgs.xorg.xkbcomp}/bin/xkbcomp ${compiledLayout} $DISPLAY"; + }; +# extraLayouts = { +# colemak-dh = { +# description = "Colemak with MOD-dh"; +# languages = [ "eng" ]; +# symbolsFile = ./colemak-dh; +# }; +# }; + videoDrivers = [ "nvidia" ]; + layout = "us"; + xkbVariant = "colemak"; + }; + }; +} diff --git a/Satori/boot.nix b/Satori/boot.nix new file mode 100644 index 0000000..d949aa9 --- /dev/null +++ b/Satori/boot.nix @@ -0,0 +1,41 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot = { + kernelPackages = pkgs.linuxPackages_zen; + kernelPatches = [ + { + name = "zenwithmuqqs"; + patch = null; + structuredExtraConfig = with lib.kernel; { + SCHED_MUQSS = yes; + }; + ignoreConfigErrors = true; + } + ]; + initrd={ + availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod"]; + kernelModules = [ ]; + }; + kernelModules = [ "kvm-intel"]; + extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ]; + loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; + }; + grub = { + enable = true; + useOSProber = true; + efiSupport = true; + device = "nodev"; + splashImage = "/etc/cirno.png"; #hehe + splashMode = "stretch"; + configurationName = "nixbruh"; + }; + }; + kernelParams = [ "nvidia-drm.modeset=1" "intel_pstate=active"]; + }; +} diff --git a/Satori/configuration.nix b/Satori/configuration.nix new file mode 100644 index 0000000..b714563 --- /dev/null +++ b/Satori/configuration.nix @@ -0,0 +1,13 @@ +{lib, config, pkgs, ... }: + +{ + imports = + [ + ./hardware.nix + ./stuff.nix + ./pkgs.nix + ./networking.nix + ./boot.nix + ]; + system.stateVersion = "20.09"; +} diff --git a/Satori/hardware.nix b/Satori/hardware.nix new file mode 100644 index 0000000..75f0a92 --- /dev/null +++ b/Satori/hardware.nix @@ -0,0 +1,48 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ + (modulesPath + "/installer/scan/not-detected.nix") + ./Hardware/power.nix + ./Hardware/graphicshit.nix + ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/4c02ddf5-d00e-4d84-856f-c327ae44d047"; + fsType = "btrfs"; + }; + + fileSystems."/boot/efi" = + { device = "/dev/disk/by-uuid/58B1-4631"; + fsType = "vfat"; + }; + + fileSystems."/home" = + { device = "/dev/nvme0n1p6"; + fsType = "ext4"; + }; + + fileSystems."/mnt/Stuff" = + { device = "/dev/sda2"; + fsType = "ntfs"; + options = ["uid=natto" "gid=users" "umask=0022" "rw"]; + }; + fileSystems."/mnt/Games" = + { device = "/dev/sda4"; + fsType = "ntfs"; + options = ["uid=natto" "gid=users" "umask=0022" "rw"]; + }; + fileSystems."/mnt/Extra" = + { device = "/dev/sda3"; + fsType = "ntfs"; + options = ["uid=natto" "gid=users" "umask=0022" "rw"]; + }; + fileSystems."/mnt/LinuxGames" = + { device = "/dev/sda5"; + fsType = "btrfs"; + options = ["rw"]; + }; + + swapDevices = [ {device = "/dev/nvme0n1p7";} ]; +} diff --git a/Satori/networking.nix b/Satori/networking.nix new file mode 100644 index 0000000..421482c --- /dev/null +++ b/Satori/networking.nix @@ -0,0 +1,20 @@ +{lib, config, pkgs, ... }: + +{ + networking = { + hostName = "Satori"; + wireless.enable = true; # Enables wireless support via wpa_supplicant. + interfaces = { + enp7s0.useDHCP = true; + wlp0s20f3 = { + useDHCP = true; + ipv4.addresses = [ { + prefixLength = 24; + address = "192.168.0.109"; + } ]; + }; + }; + defaultGateway = "192.168.0.1"; + nameservers = [ "192.168.0.1" ]; + }; +} diff --git a/Satori/pkgs.nix b/Satori/pkgs.nix new file mode 100644 index 0000000..1a2c9a6 --- /dev/null +++ b/Satori/pkgs.nix @@ -0,0 +1,60 @@ +{lib, config, pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + mpd_discord_richpresence + customscripts + xclip + dunst + xorg.xkbcomp + glibc + proxychains + #qt5.qmake + xorg.xmodmap + ffmpeg + p7zip + git + glxinfo + sox + libmpdclient + lxappearance + jq + mono + vim + mpd + wineWowPackages.staging + neofetch + tor-browser-bundle-bin + w3m + gnumake + pciutils + jdk + gcc + ntfs3g + python38 + luajit + neovim + htop + nodejs + wget + ripgrep + patchelf + doas + feh + sxiv + mpv + dwm + dmenu + st + kbd + picom + ncmpcpp + ]; + programs.steam.enable = true; + nix = { + package = pkgs.nixUnstable; + extraOptions = '' + experimental-features = nix-command flakes + ''; + }; +} diff --git a/Satori/stuff.nix b/Satori/stuff.nix new file mode 100644 index 0000000..ff0703d --- /dev/null +++ b/Satori/stuff.nix @@ -0,0 +1,42 @@ +{lib, config, pkgs, ... }: +{ + imports = [ + ./Stuff/sound.nix + ./Stuff/fonts.nix + ./Stuff/users.nix + ./Stuff/services.nix + ./Stuff/xorg.nix + ]; + time.timeZone = "Asia/Kolkata"; + environment = { + sessionVariables = { + QT_QPA_PLATFORMTHEME = "gtk3"; + QT_X11_NO_MITSHM="1"; + }; + }; + security={ + sudo.enable = false; + doas = { + enable = true; + extraRules = [ + { + users = [ "natto" ]; + keepEnv = true; + persist = true; + } + ]; + }; + }; + nix.gc = { + automatic = false; + dates = "20:15"; + }; + nixpkgs.config.allowUnfree = true; + programs = { + fish.enable = true; + dconf.enable = true; + }; + nixpkgs.config.allowBroken = true; + nix.extraOptions = ''experimental-features = nix-command flakes ca-references''; + +} diff --git a/Stuff/services.nix b/Stuff/services.nix index 1824f2f..9a03923 100644 --- a/Stuff/services.nix +++ b/Stuff/services.nix @@ -14,11 +14,6 @@ }; services = { tor.enable = true; - mysql = { - enable = true; - package = pkgs.mariadb; - }; - openssh.enable = true; logmein-hamachi.enable = true; }; # services.picom = { diff --git a/flake.lock b/flake.lock index 03589a6..9c8cdaf 100644 --- a/flake.lock +++ b/flake.lock @@ -1,20 +1,5 @@ { "nodes": { - "flake-utils": { - "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1619464443, @@ -33,7 +18,6 @@ }, "root": { "inputs": { - "flake-utils": "flake-utils", "nixpkgs": "nixpkgs", "stable": "stable" } diff --git a/flake.nix b/flake.nix index cb17000..ecaa958 100644 --- a/flake.nix +++ b/flake.nix @@ -3,23 +3,24 @@ stable.url = "github:nixos/nixpkgs/nixos-20.09"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; }; - outputs = inputs@{self, nixpkgs, stable, flake-utils,... }: + outputs = inputs@{self, nixpkgs, stable,... }: let system = "x86_64-linux"; in { overlays = { overridesandshit = import ./overlays/overridesandshit.nix; + packages = import ./overlays/packages.nix; }; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; overlays = builtins.attrValues self.overlays; }; - nixosConfigurations.nixchod = nixpkgs.lib.nixosSystem { + nixosConfigurations.Satori = nixpkgs.lib.nixosSystem { system = "${system}"; modules = [ - ./configuration.nix + ./Satori/configuration.nix { nixpkgs.pkgs = self.pkgs; } ]; }; diff --git a/overlays/customscripts/default.nix b/overlays/customscripts/default.nix new file mode 100644 index 0000000..19048a2 --- /dev/null +++ b/overlays/customscripts/default.nix @@ -0,0 +1,16 @@ +{lib,stdenv,fetchFromGitHub}: +stdenv.mkDerivation rec{ + name = "customscripts"; + src = fetchFromGitHub { + owner = "idcretard"; + repo = "custom-scripts"; + rev = "a996a52831316cc2c282904352654bd20c82f7bd"; + sha256 = "sha256-nw21YmcmQMF8NADnuHOc7eF2Yaj/r/1mYBn77fYK7s8="; + }; + unpackPhase = ":"; + installPhase = '' + mkdir -p $out/bin + cp -r $src/* $out/bin + for x in $out/bin/*;do chmod +x "$x";done +''; +} diff --git a/overlays/mpd-rpc/default.nix b/overlays/mpd-rpc/default.nix new file mode 100644 index 0000000..8231559 --- /dev/null +++ b/overlays/mpd-rpc/default.nix @@ -0,0 +1,26 @@ +{lib, stdenv, fetchFromGitHub, discord-rpc, cmake, libmpdclient}: +with lib; +stdenv.mkDerivation rec{ + name = "mpd_discord_richpresence"; + src = fetchFromGitHub { + owner = "justas-d"; + repo = "mpd-rich-presence-discord"; + rev = "ced628d3eaf3f18c5eff286b0955c605616348ee"; + sha256 = "0vl31sdgxalbnc4d4fggzqs2vsssibn53pjm6wj596cfkfpdf4y3"; + }; + buildInputs = [ + libmpdclient + cmake + discord-rpc + ]; + configurePhase = '' + cmake . + ''; + buildPhase = '' + make + ''; + installPhase = '' + mkdir -p $out/bin + cp mpd_discord_richpresence $out/bin/ + ''; +} diff --git a/overlays/packages.nix b/overlays/packages.nix new file mode 100644 index 0000000..554f88f --- /dev/null +++ b/overlays/packages.nix @@ -0,0 +1,4 @@ +final: prev: { + mpd_discord_richpresence = prev.callPackage ./mpd-rpc {}; + customscripts = prev.callPackage ./customscripts {}; +} diff --git a/pkgs.nix b/pkgs.nix index 2447cfc..4e13c06 100644 --- a/pkgs.nix +++ b/pkgs.nix @@ -1,9 +1,6 @@ {lib, config, pkgs, ... }: { - imports = [ - ./Packages/override.nix - ]; environment.systemPackages = with pkgs; [ xclip dunst