From 76b3b07e7329be637b37f92e767595143d3b03fa Mon Sep 17 00:00:00 2001 From: Mark Nipper Date: Sun, 31 Mar 2024 02:40:11 -0700 Subject: Migrate to more modular layout --- README | 70 +++++ flake.lock | 81 ++++++ flake.nix | 70 +++++ ginaz/README | 70 ----- ginaz/configuration.nix | 309 --------------------- ginaz/flake.lock | 48 ---- ginaz/flake.nix | 23 -- ginaz/hardware-configuration.nix | 50 ---- ginaz/home.nix | 290 ------------------- home/nipsy/common/core/bash.nix | 10 + home/nipsy/common/core/default.nix | 63 +++++ home/nipsy/common/core/fonts.nix | 9 + home/nipsy/common/core/git.nix | 8 + home/nipsy/common/core/ssh.nix | 5 + home/nipsy/common/core/tmux/default.nix | 6 + home/nipsy/common/core/tmux/tmux.conf | 34 +++ home/nipsy/common/core/vim/default.nix | 6 + home/nipsy/common/core/vim/vimrc | 46 +++ home/nipsy/common/core/zsh/default.nix | 10 + home/nipsy/common/core/zsh/zshrc | 170 ++++++++++++ home/nipsy/common/optional/desktops/default.nix | 7 + home/nipsy/common/optional/desktops/gtk.nix | 7 + home/nipsy/common/optional/desktops/i3/config | 228 +++++++++++++++ home/nipsy/common/optional/desktops/i3/default.nix | 10 + .../common/optional/desktops/services/dunst.nix | 11 + home/nipsy/ginaz.nix | 7 + hosts/common/core/default.nix | 21 ++ hosts/common/core/locale.nix | 5 + hosts/common/core/nix.nix | 30 ++ hosts/common/core/shells.nix | 8 + hosts/common/core/zsh.nix | 6 + hosts/common/optional/google-authenticator.nix | 23 ++ hosts/common/optional/pipewire.nix | 24 ++ hosts/common/optional/services/openssh.nix | 11 + hosts/common/optional/services/xorg.nix | 21 ++ hosts/common/optional/zfs.nix | 6 + hosts/common/users/nipsy/default.nix | 31 +++ hosts/common/users/nipsy/keys/id_arrakis.pub | 1 + hosts/common/users/root/default.nix | 10 + hosts/ginaz/default.nix | 238 ++++++++++++++++ hosts/ginaz/hardware-configuration.nix | 49 ++++ modules/home-manager/default.nix | 6 + modules/nixos/default.nix | 6 + overlays/default.nix | 26 ++ pkgs/default.nix | 5 + pkgs/sdrconnect/default.nix | 53 ++++ sdrconnect.nix | 50 ---- 47 files changed, 1438 insertions(+), 840 deletions(-) create mode 100644 README create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 ginaz/README delete mode 100644 ginaz/configuration.nix delete mode 100644 ginaz/flake.lock delete mode 100644 ginaz/flake.nix delete mode 100644 ginaz/hardware-configuration.nix delete mode 100644 ginaz/home.nix create mode 100644 home/nipsy/common/core/bash.nix create mode 100644 home/nipsy/common/core/default.nix create mode 100644 home/nipsy/common/core/fonts.nix create mode 100644 home/nipsy/common/core/git.nix create mode 100644 home/nipsy/common/core/ssh.nix create mode 100644 home/nipsy/common/core/tmux/default.nix create mode 100644 home/nipsy/common/core/tmux/tmux.conf create mode 100644 home/nipsy/common/core/vim/default.nix create mode 100644 home/nipsy/common/core/vim/vimrc create mode 100644 home/nipsy/common/core/zsh/default.nix create mode 100644 home/nipsy/common/core/zsh/zshrc create mode 100644 home/nipsy/common/optional/desktops/default.nix create mode 100644 home/nipsy/common/optional/desktops/gtk.nix create mode 100644 home/nipsy/common/optional/desktops/i3/config create mode 100644 home/nipsy/common/optional/desktops/i3/default.nix create mode 100644 home/nipsy/common/optional/desktops/services/dunst.nix create mode 100644 home/nipsy/ginaz.nix create mode 100644 hosts/common/core/default.nix create mode 100644 hosts/common/core/locale.nix create mode 100644 hosts/common/core/nix.nix create mode 100644 hosts/common/core/shells.nix create mode 100644 hosts/common/core/zsh.nix create mode 100644 hosts/common/optional/google-authenticator.nix create mode 100644 hosts/common/optional/pipewire.nix create mode 100644 hosts/common/optional/services/openssh.nix create mode 100644 hosts/common/optional/services/xorg.nix create mode 100644 hosts/common/optional/zfs.nix create mode 100644 hosts/common/users/nipsy/default.nix create mode 100644 hosts/common/users/nipsy/keys/id_arrakis.pub create mode 100644 hosts/common/users/root/default.nix create mode 100644 hosts/ginaz/default.nix create mode 100644 hosts/ginaz/hardware-configuration.nix create mode 100644 modules/home-manager/default.nix create mode 100644 modules/nixos/default.nix create mode 100644 overlays/default.nix create mode 100644 pkgs/default.nix create mode 100644 pkgs/sdrconnect/default.nix delete mode 100644 sdrconnect.nix diff --git a/README b/README new file mode 100644 index 0000000..4384a3b --- /dev/null +++ b/README @@ -0,0 +1,70 @@ +# boot NixOS installer +# connect wireless +# start terminal +passwd +sudo passwd +sudo systemctl restart sshd +# connect remotely via SSH to IP from: ip a s + +DISK=/dev/disk/by-id/nvme-SAMSUNG_MZVL21T0HCLR-00BL2_S64NNX0T233166 +cat /dev/urandom > ${DISK} +wipefs ${DISK}; sgdisk -z ${DISK}; sgdisk -og ${DISK} +sgdisk --new 1::+1G --typecode=1:EF00 --change-name=1:'boot' ${DISK} +sgdisk --new 2::+32G --typecode=2:8200 --change-name=2:'swap' ${DISK} +sgdisk --new 3::-0 --typecode=3:BF00 --change-name=3:'rpool' ${DISK} +partprobe +udevadm settle +fdisk -l ${DISK} +mkfs.fat -F32 -nboot ${DISK}-part1 +mkswap -L swap ${DISK}-part2 +swapon /dev/disk/by-label/swap +zpool create -o ashift=12 -o autotrim=on -O acltype=posixacl -O compression=on -O dnodesize=auto -O normalization=formD -O encryption=on -O keyformat=passphrase -O keylocation=prompt -O relatime=on -O xattr=sa -O mountpoint=none -O canmount=off -f rpool ${DISK}-part3 +zfs create -p -o mountpoint=legacy rpool/local/root +zfs snapshot rpool/local/root@blank +mount -t zfs rpool/local/root /mnt +mkdir /mnt/boot +mount /dev/disk/by-label/boot /mnt/boot +zfs create -p -o mountpoint=legacy rpool/local/nix +mkdir /mnt/nix +mount -t zfs rpool/local/nix /mnt/nix +zfs create -p -o mountpoint=legacy rpool/user/home/root +mkdir /mnt/root +mount -t zfs rpool/user/home/root /mnt/root +zfs create -p -o mountpoint=legacy rpool/user/home/nipsy +mkdir -p /mnt/home/nipsy +mount -t zfs rpool/user/home/nipsy /mnt/home/nipsy + +nixos-generate-config --root /mnt + +cat /mnt/etc/nixos/configuration.nix +cat /mnt/etc/nixos/hardware-configuration.nix + +# unstable might be directly installable by first doing: +# see https://github.com/NixOS/nixpkgs/issues/35362 +#nix-channel --add https://nixos.org/channels/nixos-unstable nixos +#nix-channel --update + +#nixos-install --root /mnt +nixos-install + +cd / +umount -Rl /mnt +zpool export -a +reboot + +# upgrade to unstable +nix-channel --add https://nixos.org/channels/nixos-unstable nixos +nixos-rebuild switch --upgrade + +# later upgrades after flakes are enabled +cd /etc/nixos && nix flake update && cd && nixos-rebuild switch --upgrade && echo && nixos-rebuild list-generations | cat && echo && nix store diff-closures $(find /nix/var/nix/profiles -iname system-\* -type l | sort | tail -2 | xargs) + +# clean up all but the two most recent systems +nixos-rebuild list-generations | cat +rm $(ls /nix/var/nix/profiles/system-*-link -1dtr | head -n -2) +nixos-rebuild list-generations | cat +nix-store --gc +nixos-rebuild boot + +# deduplicate the store +nix store optimise diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..c89237a --- /dev/null +++ b/flake.lock @@ -0,0 +1,81 @@ +{ + "nodes": { + "hardware": { + "locked": { + "lastModified": 1711352745, + "narHash": "sha256-luvqik+i3HTvCbXQZgB6uggvEcxI9uae0nmrgtXJ17U=", + "owner": "nixos", + "repo": "nixos-hardware", + "rev": "9a763a7acc4cfbb8603bb0231fec3eda864f81c0", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixos-hardware", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1711868868, + "narHash": "sha256-QpZanlbVu6Gb2K96u3vgu0F2BvZD74+fOsIFWcYEXoY=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "30f2ec39519f4f5a8a96af808c439e730c15aeab", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1711873298, + "narHash": "sha256-m/zqoQqZDIdbBTfuyrzUrhK1rrnoe8x73V0bKK0jVKM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "599937e03ee0306ee68ae6c1949b85aecfa6aaba", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1711703276, + "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "hardware": "hardware", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..719b19a --- /dev/null +++ b/flake.nix @@ -0,0 +1,70 @@ +{ + description = "nipsy's NixOS configuration"; + + inputs = { + hardware.url = "github:nixos/nixos-hardware"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixpkgs.url = "github:NixOS/nixpkgs/release-23.11"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + + outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... } @ inputs: + let + inherit (self) outputs; + lib = nixpkgs.lib // home-manager.lib; + systems = [ + "x86_64-linux" + # "aarch64-linux" + # "x86_64-darwin" + #"aarch64-darwin" + # "i686-linux" + ]; + forEachSystem = f: lib.genAttrs systems (system: f pkgsFor.${system}); + pkgsFor = lib.genAttrs systems (system: import nixpkgs { + inherit system; + config.allowUnfree = true; + }); + in + { + inherit lib; + + # Custom modules to enable special functionality for nixos or home-manager oriented configs. + nixosModules = import ./modules/nixos; + homeManagerModules = import ./modules/home-manager; + + # Custom modifications/overrides to upstream packages. + overlays = import ./overlays { inherit inputs outputs; }; + + # Your custom packages meant to be shared or upstreamed. + # Accessible through 'nix build', 'nix shell', etc + packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; }); + + # nixos-rebuild switch --flake .#hostname' + nixosConfigurations = { + ginaz = nixpkgs-unstable.lib.nixosSystem rec { + system = "x86_64-linux"; + modules = [ + { + nixpkgs.config.pkgs = import nixpkgs-unstable { inherit system; }; + } + ./hosts/ginaz + ]; + specialArgs = { inherit inputs outputs; }; + }; + }; + + # home-manager switch --flake .#primary-username@hostname' + homeConfigurations = { + "nipsy@ginaz" = lib.homeManagerConfiguration { + modules = [ ./home/nipsy/ginaz.nix ]; + pkgs = pkgsFor.x86_64-linux; + extraSpecialArgs = { inherit inputs outputs; }; + }; + }; + }; +} diff --git a/ginaz/README b/ginaz/README deleted file mode 100644 index 4384a3b..0000000 --- a/ginaz/README +++ /dev/null @@ -1,70 +0,0 @@ -# boot NixOS installer -# connect wireless -# start terminal -passwd -sudo passwd -sudo systemctl restart sshd -# connect remotely via SSH to IP from: ip a s - -DISK=/dev/disk/by-id/nvme-SAMSUNG_MZVL21T0HCLR-00BL2_S64NNX0T233166 -cat /dev/urandom > ${DISK} -wipefs ${DISK}; sgdisk -z ${DISK}; sgdisk -og ${DISK} -sgdisk --new 1::+1G --typecode=1:EF00 --change-name=1:'boot' ${DISK} -sgdisk --new 2::+32G --typecode=2:8200 --change-name=2:'swap' ${DISK} -sgdisk --new 3::-0 --typecode=3:BF00 --change-name=3:'rpool' ${DISK} -partprobe -udevadm settle -fdisk -l ${DISK} -mkfs.fat -F32 -nboot ${DISK}-part1 -mkswap -L swap ${DISK}-part2 -swapon /dev/disk/by-label/swap -zpool create -o ashift=12 -o autotrim=on -O acltype=posixacl -O compression=on -O dnodesize=auto -O normalization=formD -O encryption=on -O keyformat=passphrase -O keylocation=prompt -O relatime=on -O xattr=sa -O mountpoint=none -O canmount=off -f rpool ${DISK}-part3 -zfs create -p -o mountpoint=legacy rpool/local/root -zfs snapshot rpool/local/root@blank -mount -t zfs rpool/local/root /mnt -mkdir /mnt/boot -mount /dev/disk/by-label/boot /mnt/boot -zfs create -p -o mountpoint=legacy rpool/local/nix -mkdir /mnt/nix -mount -t zfs rpool/local/nix /mnt/nix -zfs create -p -o mountpoint=legacy rpool/user/home/root -mkdir /mnt/root -mount -t zfs rpool/user/home/root /mnt/root -zfs create -p -o mountpoint=legacy rpool/user/home/nipsy -mkdir -p /mnt/home/nipsy -mount -t zfs rpool/user/home/nipsy /mnt/home/nipsy - -nixos-generate-config --root /mnt - -cat /mnt/etc/nixos/configuration.nix -cat /mnt/etc/nixos/hardware-configuration.nix - -# unstable might be directly installable by first doing: -# see https://github.com/NixOS/nixpkgs/issues/35362 -#nix-channel --add https://nixos.org/channels/nixos-unstable nixos -#nix-channel --update - -#nixos-install --root /mnt -nixos-install - -cd / -umount -Rl /mnt -zpool export -a -reboot - -# upgrade to unstable -nix-channel --add https://nixos.org/channels/nixos-unstable nixos -nixos-rebuild switch --upgrade - -# later upgrades after flakes are enabled -cd /etc/nixos && nix flake update && cd && nixos-rebuild switch --upgrade && echo && nixos-rebuild list-generations | cat && echo && nix store diff-closures $(find /nix/var/nix/profiles -iname system-\* -type l | sort | tail -2 | xargs) - -# clean up all but the two most recent systems -nixos-rebuild list-generations | cat -rm $(ls /nix/var/nix/profiles/system-*-link -1dtr | head -n -2) -nixos-rebuild list-generations | cat -nix-store --gc -nixos-rebuild boot - -# deduplicate the store -nix store optimise diff --git a/ginaz/configuration.nix b/ginaz/configuration.nix deleted file mode 100644 index 9310c2b..0000000 --- a/ginaz/configuration.nix +++ /dev/null @@ -1,309 +0,0 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page, on -# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). - -{ config, lib, pkgs, ... }: { - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; - - boot.initrd.kernelModules = [ "amdgpu" "zfs" ]; - boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.generationsDir.copyKernels = true; - boot.loader.systemd-boot.enable = true; - boot.supportedFilesystems = [ "zfs" ]; - boot.zfs.devNodes = "/dev/disk/by-label"; - - documentation.dev.enable = true; - documentation.man.enable = true; - - environment.shells = with pkgs; [ zsh ]; - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - bc - bespokesynth - bintools - cardinal - cargo - conntrack-tools - curl - dmenu - dict - dig - dmidecode - easyeffects - encfs - enscript - evince - feh - ffmpeg - file - flac - fldigi - fluidsynth - foot - fortune - fping - gcr - geeqie - geonkick - #gimp-with-plugins - gimp - git - go - godot_4 - google-authenticator - google-chrome - gv - helm - i3 - i3status - imagemagick - inkscape - inxi - iotop - ipcalc - iperf - jq - lame - libreoffice - libva-utils - lilypond-unstable-with-fonts - lshw - lsof - mame - mariadb - mednafen - mednaffe - mesa-demos - mkvtoolnix - mpv - mutt - netcat-openbsd - nix-index - nmap - ntfs3g - oath-toolkit - openldap - openssl - (pass.withExtensions (ext: with ext; [pass-otp])) - pass - patchelf - pavucontrol - pciutils - picom - polkit_gnome - polyphone - poppler_utils - powertop - psmisc - pv - pwgen - qemu_kvm - qpwgraph - qrencode - qsynth - radeontop - rdesktop - read-edid - reaper - recode - rosegarden - rustc - samplv1 - sfizz - sg3_utils - signal-desktop - speedtest-cli - sqlite - sshfs - st - stoken - surge - #surge-XT - sxiv - synthv1 - sysstat - tcpdump - tigervnc - traceroute - tree - tshark - turbovnc - unrar - unzip - usbutils - vapoursynth - vdpauinfo - vim - vlc - vmpk - vocproc - vulkan-tools - wavpack - wget - whois - winetricks - wineWowPackages.stagingFull - wireguard-tools - x11vnc - x265 - xclip - xdotool - xorg.xdpyinfo - xscreensaver - xsnow - yabridge - yabridgectl - yoshimi - zig - zip - zynaddsubfx - ]; - - i18n.defaultLocale = "en_US.UTF-8"; - - networking.hostId = "8425e349"; - networking.hostName = "ginaz"; - networking.networkmanager.enable = true; - networking.nftables.enable = true; - - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - nixpkgs.config.allowUnfree = true; - - programs.atop.enable = true; - programs.firefox.enable = true; - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - programs.iftop.enable = true; - programs.mtr.enable = true; - programs.nm-applet.enable = true; - programs.steam.enable = true; - programs.tmux.enable = true; - programs.zsh.enable = true; - - security.pam.services = { - chfn.googleAuthenticator.enable = true; - chsh.googleAuthenticator.enable = true; - cups.googleAuthenticator.enable = true; - lightdm.googleAuthenticator.enable = true; - login.googleAuthenticator.enable = true; - other.googleAuthenticator.enable = true; - sshd.googleAuthenticator.enable = true; - su.googleAuthenticator.enable = true; - sudo.googleAuthenticator.enable = true; - vlock.googleAuthenticator.enable = true; - xlock.googleAuthenticator.enable = true; - xscreensaver.googleAuthenticator.enable = true; - }; - security.polkit = { - enable = true; - extraConfig = '' - polkit.addRule(function(action, subject) { - if ( - subject.isInGroup("users") - && ( - action.id == "org.freedesktop.login1.reboot" || - action.id == "org.freedesktop.login1.reboot-multiple-sessions" || - action.id == "org.freedesktop.login1.power-off" || - action.id == "org.freedesktop.login1.power-off-multiple-sessions" - ) - ) - { - return polkit.Result.YES; - } - }) - ''; - }; - security.rtkit.enable = true; - - services.blueman.enable = true; - services.openssh = { - enable = true; - openFirewall = true; - settings.PasswordAuthentication = false; - settings.KbdInteractiveAuthentication = false; - settings.PermitRootLogin = "yes"; - }; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - }; - services.printing.enable = true; - services.udev.extraRules = '' - SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="2500",MODE:="0666" - SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3000",MODE:="0666" - SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3010",MODE:="0666" - SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3020",MODE:="0666" - SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3030",MODE:="0666" - ''; - services.xserver = { - displayManager.defaultSession = "xsession"; - displayManager.lightdm = { - enable = true; - extraSeatDefaults = ''greeter-hide-users=true''; - }; - displayManager.session = [ - { - manage = "desktop"; - name = "xsession"; - start = ''exec $HOME/.xsession''; - } - ]; - enable = true; - libinput.enable = true; - videoDrivers = [ "amdgpu" ]; - xkb.layout = "us"; - xkb.options = "caps:super,compose:ralt"; - }; - services.zfs.autoScrub.enable = true; - services.zfs.trim.enable = true; - - system.stateVersion = "23.11"; - - systemd = { - user.services.polkit-gnome-authentication-agent-1 = { - description = "polkit-gnome-authentication-agent-1"; - wantedBy = [ "graphical-session.target" ]; - wants = [ "graphical-session.target" ]; - after = [ "graphical-session.target" ]; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; - Restart = "on-failure"; - RestartSec = 1; - TimeoutStopSec = 10; - }; - }; - }; - - time.timeZone = "America/Los_Angeles"; - - users.groups.nipsy.gid = 1000; - users.users.nipsy = { - isNormalUser = true; - group = "nipsy"; - home = "/home/nipsy"; - description = "Mark Nipper"; - extraGroups = [ "wheel" "networkmanager" ]; - #packages = with pkgs; [ - # firefox - # tree - #]; - shell = pkgs.zsh; - openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbKppxX6GF88fAfXJZR4ZcPzwopi7TAy+v/dmWso+7f nipsy@arrakis.bitgnome.net" ]; - }; - - users.users.root = { - shell = pkgs.zsh; - openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbKppxX6GF88fAfXJZR4ZcPzwopi7TAy+v/dmWso+7f nipsy@arrakis.bitgnome.net" ]; - }; -} diff --git a/ginaz/flake.lock b/ginaz/flake.lock deleted file mode 100644 index 021cb88..0000000 --- a/ginaz/flake.lock +++ /dev/null @@ -1,48 +0,0 @@ -{ - "nodes": { - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1710401383, - "narHash": "sha256-jskq7uDpKXrRoY4hDpNqykmSSKHUXYlo7ZFc/se7fus=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "1ab3cec3a1bbb065b2d52b913d1431366028d5b5", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1710272261, - "narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "home-manager": "home-manager", - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/ginaz/flake.nix b/ginaz/flake.nix deleted file mode 100644 index b60a38a..0000000 --- a/ginaz/flake.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - description = "nipsy's NixOS configuration"; - - inputs = { - nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; - home-manager.url = "github:nix-community/home-manager"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - }; - - outputs = inputs@{ nixpkgs, home-manager, ... }: { - nixosConfigurations.ginaz = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - ./configuration.nix - home-manager.nixosModules.home-manager { - home-manager.useGlobalPkgs = true; - #home-manager.useUserPackages = true; - home-manager.users.nipsy = import ./home.nix; - } - ]; - }; - }; -} diff --git a/ginaz/hardware-configuration.nix b/ginaz/hardware-configuration.nix deleted file mode 100644 index 140a799..0000000 --- a/ginaz/hardware-configuration.nix +++ /dev/null @@ -1,50 +0,0 @@ -# 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 = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "rpool/local/root"; - fsType = "zfs"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-label/boot"; - fsType = "vfat"; - }; - - fileSystems."/nix" = - { device = "rpool/local/nix"; - fsType = "zfs"; - }; - - fileSystems."/root" = - { device = "rpool/user/home/root"; - fsType = "zfs"; - }; - - fileSystems."/home/nipsy" = - { device = "rpool/user/home/nipsy"; - fsType = "zfs"; - }; - - swapDevices = - [ { device = "/dev/disk/by-label/swap"; } - ]; - - hardware.bluetooth.enable = true; - #hardware.bluetooth.powerOnBoot = true; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} diff --git a/ginaz/home.nix b/ginaz/home.nix deleted file mode 100644 index c2f84f7..0000000 --- a/ginaz/home.nix +++ /dev/null @@ -1,290 +0,0 @@ -{ config, pkgs, ... }: - -{ - gtk = { - enable = true; - gtk3.extraConfig.gtk-application-prefer-dark-theme = true; - gtk4.extraConfig.gtk-application-prefer-dark-theme = true; - }; - - home.username = "nipsy"; - home.homeDirectory = "/home/nipsy"; - home.stateVersion = "23.11"; - - programs.git = { - enable = true; - userName = "Mark Nipper"; - userEmail = "nipsy@bitgnome.net"; - extraConfig.pull.rebase = true; - }; - - programs.home-manager.enable = true; - - programs.tmux = { - enable = true; - extraConfig = '' - #set-option -ga terminal-overrides ",st-256color:Tc" - set -as terminal-features ",foot*:RGB" - set -as terminal-features ",st-256color:RGB" - set -ga monitor-bell on - set -g history-limit 100000 - set -g bell-action any - #set -g bell-on-alert on - - set -s escape-time 0 - - setw -g aggressive-resize on - setw -g wrap-search off - - bind-key a send-prefix - bind-key k kill-session - bind-key H pipe-pane -o 'cat >> ~/.tmux.log.#h-#S-#I-#P' - - #bind-key m \ - # set -g mouse on \;\ - # display 'Mouse: ON' - #bind M \ - # set -g mouse off \;\ - # display 'Mouse: OFF' - - # vim-like copypaste mode - set-window-option -g mode-keys vi - bind-key -T copy-mode-vi v send -X begin-selection - bind-key -T copy-mode-vi y send -X copy-pipe "xclip -selection clipboard" - bind-key -T copy-mode-vi C-v send -X rectangle-toggle - bind-key P run "tmux set-buffer \"$(xclip -o -selection clipboard)\"; tmux paste-buffer" - - # don't exit copy mode after selection - #set -s mouse on - #bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection -x - ''; - }; - - programs.vim = { - enable = true; - extraConfig = '' - " Handling of big files - William Natter, Tony Mechelynck and others - " fairly certain that BufSizeThreshold is in bytes - let g:SaveUndoLevels = &undolevels - let g:BufSizeThreshold = 5242880 - if has("autocmd") - au VimEnter * let g:SaveUndoLevels = &undolevels - au BufReadPre * if getfsize(expand("%")) >= g:BufSizeThreshold | setlocal noswapfile | endif - au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | let &undolevels=g:SaveUndoLevels | else | setlocal undolevels=-1 | endif - au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | syntax on | else | syntax off | endif - endif - - set mouse& - set noautoindent " always set autoindenting off - - " enable better 24-bit color support - "let &t_8f = "\[38;2;%lu;%lu;%lum" - "let &t_8b = "\[48;2;%lu;%lu;%lum" - set termguicolors - - " If using a dark background within the editing area and syntax highlighting - " turn on this option as well - set background=dark - - if has("autocmd") - " Enabled file type detection - " Use the default filetype settings. If you also want to load indent files - " to automatically do language-dependent indenting add 'indent' as well. - filetype plugin on - "filetype indent on - endif " has ("autocmd") - - " The following are commented out as they cause vim to behave a lot - " different from regular vi. They are highly recommended though. - set showcmd " Show (partial) command in status line. - set showmatch " Show matching brackets. - set ignorecase " Do case insensitive matching - set incsearch " Incremental search - "set expandtab " replace tabs with spaces - set smarttab " use shiftwidth instead of tabstop at start of line - set spell spelllang=en_us " turn on the spell check - - set laststatus=2 - set statusline=%<%f%h%m%r%=%{&ff}\ %Y\ %b\ 0x%B\ \ %l,%c%V\ %P - - map :w:!clear;go run % - map :w:%! gofmt - ''; - }; - - programs.zsh = { - enable = true; - initExtra = '' -umask 022 - -#export GOROOT="''${HOME}/.local/go" -#export GOPATH="''${HOME}/go" - -#export PATH="$HOME/bin:$GOROOT/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin" -#export PATH="$HOME/bin:$GOROOT/bin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin" -#export PATH=~/bin::~/.local/rust/cargo/bin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin -export PATH=~/bin:''${PATH} - -#export PS1="%B%n%b@%U%m%u/%l:%~> " -export PAGER=less -export EDITOR=vim -export BROWSER=firefox - -export LC_COLLATE="C" -eval $(dircolors) -export QUOTING_STYLE="literal" - -export IRCNICK="nipsy" -export IRCNAME="Mark Nipper" - -export NNTPSERVER="news.giganews.com" - -#export HISTFILE="$HOME/.zsh_hist" -export HISTSIZE=100000 -export SAVEHIST=''${HISTSIZE} - -#export COLORTERM=truecolor -export COLORFGBG="green;blue" - -# fix stupid broken Java shit -export _JAVA_AWT_WM_NONREPARENTING=1 - -# enable pass extensions -export PASSWORD_STORE_ENABLE_EXTENSIONS=true - -# set SWAYSOCK correctly -if pgrep -U nipsy -x sway >/dev/null; then - export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock -fi - -# start sway by default if logging into tty1 -if [[ -z "''${DISPLAY}" ]] && [[ $(tty) == "/dev/tty1" ]]; then - - export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) - - # set some Wayland specific variables - export MOZ_ENABLE_WAYLAND=1 - export GDK_BACKEND=wayland - export QT_QPA_PLATFORM=wayland - export SDL_VIDEODRIVER=wayland - export XDG_SESSION_TYPE=wayland - - exec sway > ~/.sway.log - -fi - -# if already in Wayland, update the GPG TTY so ssh-askpass will work correctly -if [[ -n "''${WAYLAND_DISPLAY}" ]]; then - gpg-connect-agent updatestartuptty /bye >/dev/null -fi - -# completion options -setopt LIST_PACKED MENU_COMPLETE -# expansion and globbing options -setopt NO_NOMATCH -# history options -setopt SHARE_HISTORY EXTENDED_HISTORY HIST_FCNTL_LOCK HIST_IGNORE_ALL_DUPS HIST_REDUCE_BLANKS HIST_SAVE_NO_DUPS -# input/output options -setopt PRINT_EXIT_VALUE RM_STAR_SILENT -# job control options -setopt LONG_LIST_JOBS NO_HUP -# zle options -setopt NO_BEEP - -lsopt='--color=auto' -alias ll="ls -alFh $lsopt" -alias la="ls -aF $lsopt" -alias cal="ncal -b" -#alias grep='grep --color=always' # cannot do this as it breaks shell pipelines -alias talk='gnutalk --curses' -alias manage="tmux new-window ssh root@darkstar\; split-window -d ssh root@king\; new-window ssh root@black-sheep\; split-window -d ssh root@treebeard\; new-window ssh root@casey\; split-window -d ssh root@homer\; new-window ssh root@lilnasx\; split-window -d ssh root@trent" -alias manage-mac="tmux new-session \; source ~/.tmux/manage-mac" -alias win7="xfreerdp -x l -g 1680x1050 -u nipsy -d la-its841279wd kaitain" -alias win7-la="xfreerdp -x l -g 1680x1050 -u la-mrn447 -d austin kaitain" -#alias kubectl="~/k3s/k3s kubectl" -#alias helm="~/k3s/linux-amd64/helm" -alias lock="xscreensaver-command -lock" -alias fixkeyboard="setxkbmap -layout us -option caps:super -option compose:ralt" -alias zigup="zigup --install-dir ~/.local/zig --path-link ~/bin/zig" - -#autoload -U compinit -#compinit -zstyle ':completion:*' menu select=5 - -bindkey -v -export KEYTIMEOUT=1 - -autoload -U edit-command-line -zle -N edit-command-line -bindkey -M vicmd v edit-command-line - -# nix -#if [ -e /home/nipsy/.nix-profile/etc/profile.d/nix.sh ]; then . /home/nipsy/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer - -# The next line updates PATH for the Google Cloud SDK. -#source /home/nipsy/google-cloud-sdk/path.zsh.inc - -# The next line enables bash completion for gcloud. -#source /home/nipsy/google-cloud-sdk/completion.zsh.inc - -# always open tmux if interactive -[[ $- != *i* ]] && return -#[[ -z "$TMUX" ]] && (tmux -2 new-session -t default \; new-window || tmux -2 new-session -s default) -[[ -z "$TMUX" ]] && (tmux -2 attach -t default || tmux -2 new-session -s default) - -# prompt/theme shit -function precmd { - - local RC=''${?} - #local RC=''${(%)RC-%?} - - print -nP '\n' - - # current user - if [[ ''${EUID} -eq 0 ]]; then - print -nP '%{%S%F{red}%}%n%{%f%s%}' - else - print -nP '%{%F{magenta}%}%n%{%f%}' - fi - - print -nP '@' - - # current host - if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then - print -nP '%{%F{yellow}%}%m%{%f%}' - else - print -nP '%{%F{green}%}%m%{%f%}' - fi - - # connected terminal - print -nP '/%{%U%}%l%{%u%} ' - - # cwd - print -nP '%{%F{cyan}%}%~%{%f%} ' - - # job count - JOBCOUNT='%j' - if [[ ''${(%)JOBCOUNT} -gt 0 ]]; then - print -nP 'j=%{%F{yellow}%}%j%{%f%} ' - fi - - # previous return code - if [[ ''${RC} -ne 0 ]]; then - print -nP 'rc=%{%F{red}%}' - echo -n "''${RC}" - print -nP '%{%f%} ' - else - print -nP 'rc=%{%F{green}%}' - echo -n "''${RC}" - print -nP '%{%f%} ' - fi - - # time stamp - print -P '%{%F{cyan}%}%D{%FT%T%z}%{%f%}' - -} - -PS1='%# ' - ''; - }; -} diff --git a/home/nipsy/common/core/bash.nix b/home/nipsy/common/core/bash.nix new file mode 100644 index 0000000..77f0cf4 --- /dev/null +++ b/home/nipsy/common/core/bash.nix @@ -0,0 +1,10 @@ +{ + programs.bash = { + enable = true; + enableCompletion = true; + shellAliases = { + ll = "ls -alF --color=auto"; + la = "ls -aF --color=auto"; + }; + }; +} diff --git a/home/nipsy/common/core/default.nix b/home/nipsy/common/core/default.nix new file mode 100644 index 0000000..6903d90 --- /dev/null +++ b/home/nipsy/common/core/default.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, outputs, ... }: +{ + imports = [ + ./bash.nix + ./fonts.nix + ./git.nix + ./ssh.nix + ./tmux + ./vim + ./zsh + ] ++ (builtins.attrValues outputs.homeManagerModules); + + home = { + username = lib.mkDefault "nipsy"; + homeDirectory = lib.mkDefault "/home/${config.home.username}"; + stateVersion = lib.mkDefault "23.11"; + }; + + home.packages = builtins.attrValues { + inherit (pkgs) + + borgbackup + btop + coreutils + eza + fd + findutils + fzf + jq + nix-tree + ncdu + pciutils + pfetch + pre-commit + p7zip + ripgrep + usbutils + tree + unzip + unrar + wget + zip; + }; + + nixpkgs = { + overlays = builtins.attrValues outputs.overlays; + config = { + allowUnfree = true; + # Workaround for https://github.com/nix-community/home-manager/issues/2942 + allowUnfreePredicate = (_: true); + }; + }; + + nix = { + package = lib.mkDefault pkgs.nix; + settings = { + experimental-features = [ "nix-command" "flakes" "repl-flake" ]; + warn-dirty = false; + }; + }; + + programs.home-manager.enable = true; +} diff --git a/home/nipsy/common/core/fonts.nix b/home/nipsy/common/core/fonts.nix new file mode 100644 index 0000000..9ed0753 --- /dev/null +++ b/home/nipsy/common/core/fonts.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: +{ + fonts.fontconfig.enable = true; + home.packages = [ + pkgs.noto-fonts + pkgs.nerdfonts + ]; + +} diff --git a/home/nipsy/common/core/git.nix b/home/nipsy/common/core/git.nix new file mode 100644 index 0000000..d8bc6cf --- /dev/null +++ b/home/nipsy/common/core/git.nix @@ -0,0 +1,8 @@ +{ + programs.git = { + enable = true; + userEmail = "nipsy@bitgnome.net"; + userName = "Mark Nipper"; + extraConfig.pull.rebase = true; + }; +} diff --git a/home/nipsy/common/core/ssh.nix b/home/nipsy/common/core/ssh.nix new file mode 100644 index 0000000..929cc51 --- /dev/null +++ b/home/nipsy/common/core/ssh.nix @@ -0,0 +1,5 @@ +{ + programs.ssh = { + enable = true; + }; +} diff --git a/home/nipsy/common/core/tmux/default.nix b/home/nipsy/common/core/tmux/default.nix new file mode 100644 index 0000000..e7873f8 --- /dev/null +++ b/home/nipsy/common/core/tmux/default.nix @@ -0,0 +1,6 @@ +{ + programs.tmux = { + enable = true; + extraConfig = (builtins.readFile ./tmux.conf); + }; +} diff --git a/home/nipsy/common/core/tmux/tmux.conf b/home/nipsy/common/core/tmux/tmux.conf new file mode 100644 index 0000000..ae43d03 --- /dev/null +++ b/home/nipsy/common/core/tmux/tmux.conf @@ -0,0 +1,34 @@ +#set-option -ga terminal-overrides ",st-256color:Tc" +set -as terminal-features ",foot*:RGB" +set -as terminal-features ",st-256color:RGB" +set -ga monitor-bell on +set -g history-limit 100000 +set -g bell-action any +#set -g bell-on-alert on + +set -s escape-time 0 + +setw -g aggressive-resize on +setw -g wrap-search off + +bind-key a send-prefix +bind-key k kill-session +bind-key H pipe-pane -o 'cat >> ~/.tmux.log.#h-#S-#I-#P' + +#bind-key m \ +# set -g mouse on \;\ +# display 'Mouse: ON' +#bind M \ +# set -g mouse off \;\ +# display 'Mouse: OFF' + +# vim-like copypaste mode +set-window-option -g mode-keys vi +bind-key -T copy-mode-vi v send -X begin-selection +bind-key -T copy-mode-vi y send -X copy-pipe "xclip -selection clipboard" +bind-key -T copy-mode-vi C-v send -X rectangle-toggle +bind-key P run "tmux set-buffer \"$(xclip -o -selection clipboard)\"; tmux paste-buffer" + +# don't exit copy mode after selection +#set -s mouse on +#bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection -x diff --git a/home/nipsy/common/core/vim/default.nix b/home/nipsy/common/core/vim/default.nix new file mode 100644 index 0000000..ea4ed5e --- /dev/null +++ b/home/nipsy/common/core/vim/default.nix @@ -0,0 +1,6 @@ +{ + programs.vim = { + enable = true; + extraConfig = (builtins.readFile ./vimrc); + }; +} diff --git a/home/nipsy/common/core/vim/vimrc b/home/nipsy/common/core/vim/vimrc new file mode 100644 index 0000000..e80231c --- /dev/null +++ b/home/nipsy/common/core/vim/vimrc @@ -0,0 +1,46 @@ +" Handling of big files - William Natter, Tony Mechelynck and others +" fairly certain that BufSizeThreshold is in bytes +let g:SaveUndoLevels = &undolevels +let g:BufSizeThreshold = 5242880 +if has("autocmd") + au VimEnter * let g:SaveUndoLevels = &undolevels + au BufReadPre * if getfsize(expand("%")) >= g:BufSizeThreshold | setlocal noswapfile | endif + au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | let &undolevels=g:SaveUndoLevels | else | setlocal undolevels=-1 | endif + au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | syntax on | else | syntax off | endif +endif + +set mouse& +set noautoindent " always set autoindenting off + +" enable better 24-bit color support +"let &t_8f = "\[38;2;%lu;%lu;%lum" +"let &t_8b = "\[48;2;%lu;%lu;%lum" +set termguicolors + +" If using a dark background within the editing area and syntax highlighting +" turn on this option as well +set background=dark + +if has("autocmd") + " Enabled file type detection + " Use the default filetype settings. If you also want to load indent files + " to automatically do language-dependent indenting add 'indent' as well. + filetype plugin on + "filetype indent on +endif " has ("autocmd") + +" The following are commented out as they cause vim to behave a lot +" different from regular vi. They are highly recommended though. +set showcmd " Show (partial) command in status line. +set showmatch " Show matching brackets. +set ignorecase " Do case insensitive matching +set incsearch " Incremental search +"set expandtab " replace tabs with spaces +set smarttab " use shiftwidth instead of tabstop at start of line +set spell spelllang=en_us " turn on the spell check + +set laststatus=2 +set statusline=%<%f%h%m%r%=%{&ff}\ %Y\ %b\ 0x%B\ \ %l,%c%V\ %P + +map :w:!clear;go run % +map :w:%! gofmt diff --git a/home/nipsy/common/core/zsh/default.nix b/home/nipsy/common/core/zsh/default.nix new file mode 100644 index 0000000..453fa9f --- /dev/null +++ b/home/nipsy/common/core/zsh/default.nix @@ -0,0 +1,10 @@ +{ + programs.zsh = { + enable = true; + initExtra = (builtins.readFile ./zshrc); + shellAliases = { + la = "ls -alFh --color=auto"; + ll = "ls -aF --color=auto"; + }; + }; +} diff --git a/home/nipsy/common/core/zsh/zshrc b/home/nipsy/common/core/zsh/zshrc new file mode 100644 index 0000000..9e43d1d --- /dev/null +++ b/home/nipsy/common/core/zsh/zshrc @@ -0,0 +1,170 @@ +umask 022 + +#export GOROOT="''${HOME}/.local/go" +#export GOPATH="''${HOME}/go" + +#export PATH="$HOME/bin:$GOROOT/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin" +#export PATH="$HOME/bin:$GOROOT/bin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin" +#export PATH=~/bin::~/.local/rust/cargo/bin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin +export PATH=~/bin:''${PATH} + +#export PS1="%B%n%b@%U%m%u/%l:%~> " +export PAGER=less +export EDITOR=vim +export BROWSER=firefox + +export LC_COLLATE="C" +eval $(dircolors) +export QUOTING_STYLE="literal" + +export IRCNICK="nipsy" +export IRCNAME="Mark Nipper" + +export NNTPSERVER="news.giganews.com" + +#export HISTFILE="$HOME/.zsh_hist" +export HISTSIZE=100000 +export SAVEHIST=''${HISTSIZE} + +#export COLORTERM=truecolor +export COLORFGBG="green;blue" + +# fix stupid broken Java shit +export _JAVA_AWT_WM_NONREPARENTING=1 + +# enable pass extensions +export PASSWORD_STORE_ENABLE_EXTENSIONS=true + +# set SWAYSOCK correctly +if pgrep -U nipsy -x sway >/dev/null; then + export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock +fi + +# start sway by default if logging into tty1 +if [[ -z "''${DISPLAY}" ]] && [[ $(tty) == "/dev/tty1" ]]; then + + export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) + + # set some Wayland specific variables + export MOZ_ENABLE_WAYLAND=1 + export GDK_BACKEND=wayland + export QT_QPA_PLATFORM=wayland + export SDL_VIDEODRIVER=wayland + export XDG_SESSION_TYPE=wayland + + exec sway > ~/.sway.log + +fi + +# if already in Wayland, update the GPG TTY so ssh-askpass will work correctly +if [[ -n "''${WAYLAND_DISPLAY}" ]]; then + gpg-connect-agent updatestartuptty /bye >/dev/null +fi + +# completion options +setopt LIST_PACKED MENU_COMPLETE +# expansion and globbing options +setopt NO_NOMATCH +# history options +setopt SHARE_HISTORY EXTENDED_HISTORY HIST_FCNTL_LOCK HIST_IGNORE_ALL_DUPS HIST_REDUCE_BLANKS HIST_SAVE_NO_DUPS +# input/output options +setopt PRINT_EXIT_VALUE RM_STAR_SILENT +# job control options +setopt LONG_LIST_JOBS NO_HUP +# zle options +setopt NO_BEEP + +lsopt='--color=auto' +#alias ll="ls -alFh $lsopt" +#alias la="ls -aF $lsopt" +alias cal="ncal -b" +#alias grep='grep --color=always' # cannot do this as it breaks shell pipelines +alias talk='gnutalk --curses' +alias manage="tmux new-window ssh root@darkstar\; split-window -d ssh root@king\; new-window ssh root@black-sheep\; split-window -d ssh root@treebeard\; new-window ssh root@casey\; split-window -d ssh root@homer\; new-window ssh root@lilnasx\; split-window -d ssh root@trent" +alias manage-mac="tmux new-session \; source ~/.tmux/manage-mac" +alias win7="xfreerdp -x l -g 1680x1050 -u nipsy -d la-its841279wd kaitain" +alias win7-la="xfreerdp -x l -g 1680x1050 -u la-mrn447 -d austin kaitain" +#alias kubectl="~/k3s/k3s kubectl" +#alias helm="~/k3s/linux-amd64/helm" +alias lock="xscreensaver-command -lock" +alias fixkeyboard="setxkbmap -layout us -option caps:super -option compose:ralt" +alias zigup="zigup --install-dir ~/.local/zig --path-link ~/bin/zig" + +#autoload -U compinit +#compinit +zstyle ':completion:*' menu select=5 + +bindkey -v +export KEYTIMEOUT=1 + +autoload -U edit-command-line +zle -N edit-command-line +bindkey -M vicmd v edit-command-line + +# nix +#if [ -e /home/nipsy/.nix-profile/etc/profile.d/nix.sh ]; then . /home/nipsy/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer + +# The next line updates PATH for the Google Cloud SDK. +#source /home/nipsy/google-cloud-sdk/path.zsh.inc + +# The next line enables bash completion for gcloud. +#source /home/nipsy/google-cloud-sdk/completion.zsh.inc + +# always open tmux if interactive +[[ $- != *i* ]] && return +#[[ -z "$TMUX" ]] && (tmux -2 new-session -t default \; new-window || tmux -2 new-session -s default) +[[ -z "$TMUX" ]] && (tmux -2 attach -t default || tmux -2 new-session -s default) + +# prompt/theme shit +function precmd { + + local RC=''${?} + #local RC=''${(%)RC-%?} + + print -nP '\n' + + # current user + if [[ ''${EUID} -eq 0 ]]; then + print -nP '%{%S%F{red}%}%n%{%f%s%}' + else + print -nP '%{%F{magenta}%}%n%{%f%}' + fi + + print -nP '@' + + # current host + if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then + print -nP '%{%F{yellow}%}%m%{%f%}' + else + print -nP '%{%F{green}%}%m%{%f%}' + fi + + # connected terminal + print -nP '/%{%U%}%l%{%u%} ' + + # cwd + print -nP '%{%F{cyan}%}%~%{%f%} ' + + # job count + JOBCOUNT='%j' + if [[ ''${(%)JOBCOUNT} -gt 0 ]]; then + print -nP 'j=%{%F{yellow}%}%j%{%f%} ' + fi + + # previous return code + if [[ ''${RC} -ne 0 ]]; then + print -nP 'rc=%{%F{red}%}' + echo -n "''${RC}" + print -nP '%{%f%} ' + else + print -nP 'rc=%{%F{green}%}' + echo -n "''${RC}" + print -nP '%{%f%} ' + fi + + # time stamp + print -P '%{%F{cyan}%}%D{%FT%T%z}%{%f%}' + +} + +PS1='%# ' diff --git a/home/nipsy/common/optional/desktops/default.nix b/home/nipsy/common/optional/desktops/default.nix new file mode 100644 index 0000000..0bb8411 --- /dev/null +++ b/home/nipsy/common/optional/desktops/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./gtk.nix + ./i3 + ./services/dunst.nix + ]; +} diff --git a/home/nipsy/common/optional/desktops/gtk.nix b/home/nipsy/common/optional/desktops/gtk.nix new file mode 100644 index 0000000..facb782 --- /dev/null +++ b/home/nipsy/common/optional/desktops/gtk.nix @@ -0,0 +1,7 @@ +{ + gtk = { + enable = true; + gtk3.extraConfig.gtk-application-prefer-dark-theme = true; + gtk4.extraConfig.gtk-application-prefer-dark-theme = true; + }; +} diff --git a/home/nipsy/common/optional/desktops/i3/config b/home/nipsy/common/optional/desktops/i3/config new file mode 100644 index 0000000..57c9d38 --- /dev/null +++ b/home/nipsy/common/optional/desktops/i3/config @@ -0,0 +1,228 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout somewhen, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see http://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. ISO 10646 = Unicode +font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, if you need a lot of unicode glyphs or +# right-to-left text rendering, you should instead use pango for rendering and +# chose a FreeType font, such as: +# font pango:DejaVu Sans Mono 10 + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec --no-startup-id st + +# lock the screen +bindsym $mod+Scroll_Lock exec --no-startup-id xscreensaver-command -lock + +# increase volume +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% + +# decrease volume +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% + +# mute volume +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle + +# mute mic volume +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute 1 toggle + +# kill focused window +bindsym $mod+Shift+q kill +# kill with middle mouse button over titlebar +bindsym --release button2 kill +# kill with middle mouse button and $mod anywhere over window +bindsym --whole-window $mod+button2 kill + +# start dmenu (a program launcher) +bindsym $mod+d exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+Shift+f fullscreen + +# enter fullscreen mode for the focused container +bindsym $mod+Shift+g fullscreen global + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# switch to workspace +bindsym $mod+1 workspace 1 +bindsym $mod+2 workspace 2 +bindsym $mod+3 workspace 3 +bindsym $mod+4 workspace 4 +bindsym $mod+5 workspace 5 +bindsym $mod+6 workspace 6 +bindsym $mod+7 workspace 7 +bindsym $mod+8 workspace 8 +bindsym $mod+9 workspace 9 +bindsym $mod+0 workspace 10 +bindsym $mod+F1 workspace 11 +bindsym $mod+F2 workspace 12 +bindsym $mod+F3 workspace 13 +bindsym $mod+F4 workspace 14 +bindsym $mod+F5 workspace 15 +bindsym $mod+F6 workspace 16 +bindsym $mod+F7 workspace 17 +bindsym $mod+F8 workspace 18 +bindsym $mod+F9 workspace 19 +bindsym $mod+F10 workspace 20 + +# move backward or forward to next workspace +bindsym $mod+n workspace next +bindsym $mod+p workspace prev +bindsym $mod+f workspace next_on_output +bindsym $mod+b workspace prev_on_output + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace 1 +bindsym $mod+Shift+2 move container to workspace 2 +bindsym $mod+Shift+3 move container to workspace 3 +bindsym $mod+Shift+4 move container to workspace 4 +bindsym $mod+Shift+5 move container to workspace 5 +bindsym $mod+Shift+6 move container to workspace 6 +bindsym $mod+Shift+7 move container to workspace 7 +bindsym $mod+Shift+8 move container to workspace 8 +bindsym $mod+Shift+9 move container to workspace 9 +bindsym $mod+Shift+0 move container to workspace 10 +bindsym $mod+Shift+F1 move container to workspace 11 +bindsym $mod+Shift+F2 move container to workspace 12 +bindsym $mod+Shift+F3 move container to workspace 13 +bindsym $mod+Shift+F4 move container to workspace 14 +bindsym $mod+Shift+F5 move container to workspace 15 +bindsym $mod+Shift+F6 move container to workspace 16 +bindsym $mod+Shift+F7 move container to workspace 17 +bindsym $mod+Shift+F8 move container to workspace 18 +bindsym $mod+Shift+F9 move container to workspace 19 +bindsym $mod+Shift+F10 move container to workspace 20 + +# jump to urgent window +bindsym $mod+u [urgent=latest] focus + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" +bindsym $mod+Shift+e exec i3-msg exit + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + +# bar toggle, hide or show +bindsym $mod+m bar mode toggle + +# VNC mode (disable all local keybindings except the toggle keybinding) +mode "VNC" { + bindsym $mod+Shift+v mode "default" +} + +bindsym $mod+Shift+v mode "VNC" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status + tray_output primary +} + +# set borders normal for everything except st +#for_window [class="^.*"] border normal +#for_window [class="st-256color"] border pixel 1 +#for_window [class="AppGate SDP"] floating disable +#for_window [class="factorio"] fullscreen enable +for_window [class="Steam" title="Friends List"] floating enable +#for_window [class=".*"] border none +for_window [all] border none + +# Start network applet +#exec --no-startup-id nm-applet +#exec --no-startup-id blueman-applet +#exec --no-startup-id ~/bin/xscreensaver-activate +#exec --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 diff --git a/home/nipsy/common/optional/desktops/i3/default.nix b/home/nipsy/common/optional/desktops/i3/default.nix new file mode 100644 index 0000000..d369ff2 --- /dev/null +++ b/home/nipsy/common/optional/desktops/i3/default.nix @@ -0,0 +1,10 @@ +{ + programs.i3status = { + enable = true; + }; + + xsession.windowManager.i3 = { + enable = true; + extraConfig = (builtins.readFile ./config); + }; +} diff --git a/home/nipsy/common/optional/desktops/services/dunst.nix b/home/nipsy/common/optional/desktops/services/dunst.nix new file mode 100644 index 0000000..9efef64 --- /dev/null +++ b/home/nipsy/common/optional/desktops/services/dunst.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + home.packages = builtins.attrValues { + inherit (pkgs) + libnotify; # required by dunst + }; + + services.dunst = { + enable = true; + }; +} diff --git a/home/nipsy/ginaz.nix b/home/nipsy/ginaz.nix new file mode 100644 index 0000000..17d39fd --- /dev/null +++ b/home/nipsy/ginaz.nix @@ -0,0 +1,7 @@ +{ inputs, lib, pkgs, config, outputs, ... }: +{ + imports = [ + common/core + common/optional/desktops + ]; +} diff --git a/hosts/common/core/default.nix b/hosts/common/core/default.nix new file mode 100644 index 0000000..8d19a9f --- /dev/null +++ b/hosts/common/core/default.nix @@ -0,0 +1,21 @@ +{ inputs, outputs, ... }: { + imports = [ + inputs.home-manager.nixosModules.home-manager + ./locale.nix + ./nix.nix + ./shells.nix + ./zsh.nix + ] ++ (builtins.attrValues outputs.nixosModules); + + home-manager.extraSpecialArgs = { inherit inputs outputs; }; + + nixpkgs = { + # you can add global overlays here + overlays = builtins.attrValues outputs.overlays; + config = { + allowUnfree = true; + }; + }; + + hardware.enableRedistributableFirmware = true; +} diff --git a/hosts/common/core/locale.nix b/hosts/common/core/locale.nix new file mode 100644 index 0000000..914312e --- /dev/null +++ b/hosts/common/core/locale.nix @@ -0,0 +1,5 @@ +{ lib, ... }: +{ + i18n.defaultLocale = lib.mkDefault "en_US.UTF-8"; + time.timeZone = lib.mkDefault "America/Los_Angeles"; +} diff --git a/hosts/common/core/nix.nix b/hosts/common/core/nix.nix new file mode 100644 index 0000000..587bac6 --- /dev/null +++ b/hosts/common/core/nix.nix @@ -0,0 +1,30 @@ +{ inputs, lib, ... }: +{ + nix = { + settings = { + trusted-users = [ "root" "@wheel" ]; + + auto-optimise-store = lib.mkDefault true; + experimental-features = [ "nix-command" "flakes" "repl-flake" ]; + warn-dirty = false; + #flake-registry = ""; # Disable global flake registry This is a hold-over setting from Misterio77. Not sure significance but likely to do with nix.registry entry below. + }; + + # Add each flake input as a registry to make nix3 commands consistent with your flake + #registry = lib.mapAttrs (_: value: { flake = value; }) inputs; + + # Add nixpkgs input to NIX_PATH + # This lets nix2 commands still use + #nixPath = [ "nixpkgs=${inputs.nixpkgs.outPath}" ]; + + # Garbage Collection + gc = { + automatic = true; + dates = "weekly"; + randomizedDelaySec = "14m"; + # Keep the last 2 generations + options = "--delete-older-than +2"; + }; + + }; +} diff --git a/hosts/common/core/shells.nix b/hosts/common/core/shells.nix new file mode 100644 index 0000000..0469b8c --- /dev/null +++ b/hosts/common/core/shells.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +{ + environment.systemPackages = builtins.attrValues { + inherit (pkgs) + bash + zsh; + }; +} diff --git a/hosts/common/core/zsh.nix b/hosts/common/core/zsh.nix new file mode 100644 index 0000000..ba73c00 --- /dev/null +++ b/hosts/common/core/zsh.nix @@ -0,0 +1,6 @@ +{ + programs.zsh = { + enable = true; + enableCompletion = true; + }; +} diff --git a/hosts/common/optional/google-authenticator.nix b/hosts/common/optional/google-authenticator.nix new file mode 100644 index 0000000..7380d1b --- /dev/null +++ b/hosts/common/optional/google-authenticator.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: +{ + environment.systemPackages = builtins.attrValues { + inherit (pkgs) + #other + google-authenticator; + }; + + security.pam.services = { + chfn.googleAuthenticator.enable = true; + chsh.googleAuthenticator.enable = true; + cups.googleAuthenticator.enable = true; + lightdm.googleAuthenticator.enable = true; + login.googleAuthenticator.enable = true; + other.googleAuthenticator.enable = true; + sshd.googleAuthenticator.enable = true; + su.googleAuthenticator.enable = true; + sudo.googleAuthenticator.enable = true; + vlock.googleAuthenticator.enable = true; + xlock.googleAuthenticator.enable = true; + xscreensaver.googleAuthenticator.enable = true; + }; +} diff --git a/hosts/common/optional/pipewire.nix b/hosts/common/optional/pipewire.nix new file mode 100644 index 0000000..27b2a09 --- /dev/null +++ b/hosts/common/optional/pipewire.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: +{ + 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; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + # media-session.enable = true; + }; + + environment.systemPackages = builtins.attrValues { + inherit (pkgs) + pamixer + pavucontrol; + }; +} diff --git a/hosts/common/optional/services/openssh.nix b/hosts/common/optional/services/openssh.nix new file mode 100644 index 0000000..33cdbac --- /dev/null +++ b/hosts/common/optional/services/openssh.nix @@ -0,0 +1,11 @@ +{ + services.openssh = { + enable = true; + openFirewall = true; + settings = { + KbdInteractiveAuthentication = false; + PasswordAuthentication = false; + PermitRootLogin = "yes"; + }; + }; +} diff --git a/hosts/common/optional/services/xorg.nix b/hosts/common/optional/services/xorg.nix new file mode 100644 index 0000000..ebca5ea --- /dev/null +++ b/hosts/common/optional/services/xorg.nix @@ -0,0 +1,21 @@ +{ + services.xserver = { + displayManager.defaultSession = "xsession"; + displayManager.lightdm = { + enable = true; + extraSeatDefaults = ''greeter-hide-users=true''; + }; + displayManager.session = [ + { + manage = "desktop"; + name = "xsession"; + start = ''exec $HOME/.xsession''; + } + ]; + enable = true; + libinput.enable = true; + videoDrivers = [ "amdgpu" ]; + xkb.layout = "us"; + xkb.options = "caps:super,compose:ralt"; + }; +} diff --git a/hosts/common/optional/zfs.nix b/hosts/common/optional/zfs.nix new file mode 100644 index 0000000..a2d978d --- /dev/null +++ b/hosts/common/optional/zfs.nix @@ -0,0 +1,6 @@ +{ + services.zfs = { + autoScrub.enable = true; + trim.enable = true; + }; +} diff --git a/hosts/common/users/nipsy/default.nix b/hosts/common/users/nipsy/default.nix new file mode 100644 index 0000000..58ef9b3 --- /dev/null +++ b/hosts/common/users/nipsy/default.nix @@ -0,0 +1,31 @@ +{ pkgs, inputs, config, ... }: +let + ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups; +in +{ + users.groups.nipsy.gid = 1000; + users.users.nipsy = { + description = "Mark Nipper"; + extraGroups = [ + "wheel" + "audio" + "video" + ] ++ ifTheyExist [ + "networkmanager" + ]; + group = "nipsy"; + home = "/home/nipsy"; + isNormalUser = true; + openssh.authorizedKeys.keys = [ + (builtins.readFile ./keys/id_arrakis.pub) + #(builtins.readFile ./keys/id_other.pub) + ]; + + packages = [ pkgs.home-manager ]; + shell = pkgs.zsh; + }; + + # Import this user's personal/home configurations + home-manager.users.nipsy = import ../../../../home/nipsy/${config.networking.hostName}.nix; + +} diff --git a/hosts/common/users/nipsy/keys/id_arrakis.pub b/hosts/common/users/nipsy/keys/id_arrakis.pub new file mode 100644 index 0000000..38c1d4c --- /dev/null +++ b/hosts/common/users/nipsy/keys/id_arrakis.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbKppxX6GF88fAfXJZR4ZcPzwopi7TAy+v/dmWso+7f nipsy@arrakis.bitgnome.net diff --git a/hosts/common/users/root/default.nix b/hosts/common/users/root/default.nix new file mode 100644 index 0000000..f70f414 --- /dev/null +++ b/hosts/common/users/root/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +{ + users.users.root = { + openssh.authorizedKeys.keys = [ + (builtins.readFile ../nipsy/keys/id_arrakis.pub) + #(builtins.readFile ./keys/id_other.pub) + ]; + shell = pkgs.zsh; + }; +} diff --git a/hosts/ginaz/default.nix b/hosts/ginaz/default.nix new file mode 100644 index 0000000..d5fa16c --- /dev/null +++ b/hosts/ginaz/default.nix @@ -0,0 +1,238 @@ +{ config, inputs, pkgs, ... }: { + boot = { + initrd.kernelModules = [ "amdgpu" "zfs" ]; + kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; + loader = { + efi.canTouchEfiVariables = true; + systemd-boot.enable = true; + timeout = 3; + }; + supportedFilesystems = [ "zfs" ]; + zfs.devNodes = "/dev/disk/by-label"; + }; + + documentation.dev.enable = true; + documentation.man.enable = true; + + environment.systemPackages = with pkgs; [ + bc + bespokesynth + bintools + cardinal + cargo + conntrack-tools + curl + dmenu + dict + dig + dmidecode + easyeffects + encfs + enscript + evince + feh + ffmpeg + file + flac + fldigi + fluidsynth + foot + fortune + fping + gcr + geeqie + geonkick + #gimp-with-plugins + gimp + git + go + godot_4 + google-authenticator + google-chrome + gv + helm + i3 + i3status + imagemagick + inkscape + inxi + iotop + ipcalc + iperf + jq + lame + libreoffice + libva-utils + lilypond-unstable-with-fonts + lshw + lsof + mame + mariadb + mednafen + mednaffe + mesa-demos + mkvtoolnix + mpv + mutt + netcat-openbsd + nix-index + nmap + ntfs3g + oath-toolkit + openldap + openssl + (pass.withExtensions (ext: with ext; [pass-otp])) + pass + patchelf + pavucontrol + pciutils + picom + polkit_gnome + polyphone + poppler_utils + powertop + psmisc + pv + pwgen + qemu_kvm + qpwgraph + qrencode + qsynth + radeontop + rdesktop + read-edid + reaper + recode + rosegarden + rustc + samplv1 + sfizz + sg3_utils + signal-desktop + speedtest-cli + sqlite + sshfs + st + stoken + surge-XT + sxiv + synthv1 + sysstat + tcpdump + tigervnc + traceroute + tree + tshark + turbovnc + unrar + unzip + usbutils + vapoursynth + vdpauinfo + vim + vlc + vmpk + vocproc + vulkan-tools + wavpack + wget + whois + winetricks + wineWowPackages.stagingFull + wireguard-tools + x11vnc + x265 + xclip + xdotool + xorg.xdpyinfo + xscreensaver + xsnow + yabridge + yabridgectl + yoshimi + zig + zip + zynaddsubfx + ]; + + imports = [ + inputs.hardware.nixosModules.lenovo-yoga-7-14ARH7.amdgpu + + ./hardware-configuration.nix + ../common/core + ../common/optional/google-authenticator.nix + ../common/optional/pipewire.nix + ../common/optional/services/openssh.nix + ../common/optional/services/xorg.nix + ../common/optional/zfs.nix + ../common/users/nipsy + ../common/users/root + ]; + + networking = { + hostId = "8425e349"; + hostName = "ginaz"; + networkmanager.enable = true; + nftables.enable = true; + }; + + programs.atop.enable = true; + programs.firefox.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + programs.iftop.enable = true; + programs.mtr.enable = true; + programs.nm-applet.enable = true; + programs.steam.enable = true; + programs.tmux.enable = true; + programs.zsh.enable = true; + + security.polkit = { + enable = true; + extraConfig = '' + polkit.addRule(function(action, subject) { + if ( + subject.isInGroup("users") + && ( + action.id == "org.freedesktop.login1.reboot" || + action.id == "org.freedesktop.login1.reboot-multiple-sessions" || + action.id == "org.freedesktop.login1.power-off" || + action.id == "org.freedesktop.login1.power-off-multiple-sessions" + ) + ) + { + return polkit.Result.YES; + } + }) + ''; + }; + services.blueman.enable = true; + services.printing.enable = true; + services.udev.extraRules = '' + SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="2500",MODE:="0666" + SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3000",MODE:="0666" + SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3010",MODE:="0666" + SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3020",MODE:="0666" + SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3030",MODE:="0666" + ''; + + systemd = { + user.services.polkit-gnome-authentication-agent-1 = { + description = "polkit-gnome-authentication-agent-1"; + wantedBy = [ "graphical-session.target" ]; + wants = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; + }; + + system.stateVersion = "23.11"; +} diff --git a/hosts/ginaz/hardware-configuration.nix b/hosts/ginaz/hardware-configuration.nix new file mode 100644 index 0000000..a5ae455 --- /dev/null +++ b/hosts/ginaz/hardware-configuration.nix @@ -0,0 +1,49 @@ +# 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 = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "rpool/local/root"; + fsType = "zfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-label/boot"; + fsType = "vfat"; + }; + + fileSystems."/nix" = + { device = "rpool/local/nix"; + fsType = "zfs"; + }; + + fileSystems."/root" = + { device = "rpool/user/home/root"; + fsType = "zfs"; + }; + + fileSystems."/home/nipsy" = + { device = "rpool/user/home/nipsy"; + fsType = "zfs"; + }; + + swapDevices = + [ { device = "/dev/disk/by-label/swap"; } + ]; + + hardware.bluetooth.enable = true; + #hardware.bluetooth.powerOnBoot = true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix new file mode 100644 index 0000000..45aae31 --- /dev/null +++ b/modules/home-manager/default.nix @@ -0,0 +1,6 @@ +# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module). +# These should be stuff you would like to share with others, not your personal configurations. +{ + # List your module files here + # my-module = import ./my-module.nix; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix new file mode 100644 index 0000000..8605069 --- /dev/null +++ b/modules/nixos/default.nix @@ -0,0 +1,6 @@ +# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module). +# These should be stuff you would like to share with others, not your personal configurations. +{ + # List your module files here + # my-module = import ./my-module.nix; +} diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..669bd73 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,26 @@ +# +# This file defines overlays/custom modifications to upstream packages +# + +{ inputs, ... }: { + # This one brings our custom packages from the 'pkgs' directory + additions = final: _prev: import ../pkgs { pkgs = final; }; + + # This one contains whatever you want to overlay + # You can change versions, add patches, set compilation flags, anything really. + # https://nixos.wiki/wiki/Overlays + modifications = final: prev: { + # example = prev.example.overrideAttrs (oldAttrs: let ... in { + # ... + # }); + }; + + # When applied, the unstable nixpkgs set (declared in the flake inputs) will + # be accessible through 'pkgs.unstable' + unstable-packages = final: _prev: { + unstable = import inputs.nixpkgs-unstable { + system = final.system; + config.allowUnfree = true; + }; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix new file mode 100644 index 0000000..d1a6549 --- /dev/null +++ b/pkgs/default.nix @@ -0,0 +1,5 @@ +# You can build these directly using 'nix build .#example' + +{ pkgs ? import { } }: rec { + sdrconnect = pkgs.callPackage ./sdrconnect { }; +} diff --git a/pkgs/sdrconnect/default.nix b/pkgs/sdrconnect/default.nix new file mode 100644 index 0000000..d262268 --- /dev/null +++ b/pkgs/sdrconnect/default.nix @@ -0,0 +1,53 @@ +{ fetchurl, lib, stdenv }: +let + pname = "sdrconnect"; +in +stdenv.mkDerivation { + inherit pname; + version = "0.0.0"; + + src = fetchurl { + url = "https://www.sdrplay.com/software/SDRconnect_linux-x64_0fd82d9dc.run"; + sha256 = "7200f58efc1bd78250f6057cc08b5564ea9e8f33f8ef655805bbff97f56d38c2"; + }; + + sourceRoot = "."; + unpackCmd = "bash $src --quiet --noexec --target ."; + + buildInputs = [ + alsa-lib + fontconfig.lib + icu + libusb1 + remarkable2-toolchain + stdenv.cc.cc.lib + util-linux.lib + xorg.libICE + xorg.libSM + xorg.libX11 + ]; + + installPhase = '' + runHook preInstall + mkdir -p $out/{bin,lib} $out/share/{doc,icons} + patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 SDRconnect + patchelf --set-rpath \$ORIGIN/../lib:${alsa-lib}/lib:${fontconfig.lib}/lib:${icu}/lib:${libusb1}/lib:${remarkable2-toolchain}/lib:${stdenv.cc.cc.lib}/lib:${util-linux.lib}/lib:${xorg.libICE}/lib:${xorg.libSM}/lib:${xorg.libX11}/lib SDRconnect + patchelf --add-needed libasound.so.2 --add-needed libfontconfig.so.1 --add-needed libSkiaSharp.so --add-needed swig_bindings.so --add-needed libusb-1.0.so.0 --add-needed libuuid.so.1 SDRconnect + mv SDRconnect $out/bin + mv libHarfBuzzSharp.so libSkiaSharp.so swig_bindings.so $out/lib + mv sdrconnect.ico $out/share/icons + mv sdrplay_license.txt $out/share/doc + rm install.sh + runHook postInstall + ''; + + dontFixup = true; + + meta = with lib; { + description = "sdrconnect"; + homepage = "https://www.sdrplay.com/sdrconnect/"; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/sdrconnect.nix b/sdrconnect.nix deleted file mode 100644 index 22b41d8..0000000 --- a/sdrconnect.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ pkgs }: -pkgs.stdenv.mkDerivation rec { - pname = "sdrconnect"; - version = "0.0.0"; - - src = builtins.fetchurl { - url = "https://www.sdrplay.com/software/SDRconnect_linux-x64_0fd82d9dc.run"; - sha256 = "7200f58efc1bd78250f6057cc08b5564ea9e8f33f8ef655805bbff97f56d38c2"; - }; - - sourceRoot = "."; - unpackCmd = "bash $src --quiet --noexec --target ."; - - buildInputs = with pkgs; [ - alsa-lib - fontconfig.lib - icu - libusb1 - remarkable2-toolchain - stdenv.cc.cc.lib - util-linux.lib - xorg.libICE - xorg.libSM - xorg.libX11 - ]; - - installPhase = '' - runHook preInstall - mkdir -p $out/{bin,lib} $out/share/{doc,icons} - patchelf --set-interpreter ${pkgs.stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 SDRconnect - patchelf --set-rpath \$ORIGIN/../lib:${pkgs.alsa-lib}/lib:${pkgs.fontconfig.lib}/lib:${pkgs.icu}/lib:${pkgs.libusb1}/lib:${pkgs.remarkable2-toolchain}/lib:${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.util-linux.lib}/lib:${pkgs.xorg.libICE}/lib:${pkgs.xorg.libSM}/lib:${pkgs.xorg.libX11}/lib SDRconnect - patchelf --add-needed libasound.so.2 --add-needed libfontconfig.so.1 --add-needed libSkiaSharp.so --add-needed swig_bindings.so --add-needed libusb-1.0.so.0 --add-needed libuuid.so.1 SDRconnect - mv SDRconnect $out/bin - mv libHarfBuzzSharp.so libSkiaSharp.so swig_bindings.so $out/lib - mv sdrconnect.ico $out/share/icons - mv sdrplay_license.txt $out/share/doc - rm install.sh - runHook postInstall - ''; - - dontFixup = true; - - meta = with pkgs.lib; { - description = "sdrconnect"; - homepage = "https://www.sdrplay.com/sdrconnect/"; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; - license = licenses.unfree; - platforms = [ "x86_64-linux" ]; - }; -} -- cgit v1.2.3