]> Skullheadx's Git Forge - nixos.git/commitdiff
x11 setup
authorSkullheadx <admonty1@protonmail.com>
Sun, 26 Apr 2026 01:34:57 +0000 (21:34 -0400)
committerSkullheadx <admonty1@protonmail.com>
Sun, 26 Apr 2026 01:34:57 +0000 (21:34 -0400)
configuration.nix [new file with mode: 0644]
flake.lock [new file with mode: 0644]
flake.nix [new file with mode: 0644]
hardware-configuration.nix [new file with mode: 0644]
todo [new file with mode: 0644]

diff --git a/configuration.nix b/configuration.nix
new file mode 100644 (file)
index 0000000..8a498de
--- /dev/null
@@ -0,0 +1,227 @@
+{ config, pkgs, ... }:
+
+{
+  imports = [
+    ./hardware-configuration.nix
+  ];
+
+  # Bootloader.
+  boot.loader.systemd-boot.enable = true;
+  boot.loader.efi.canTouchEfiVariables = true;
+
+  # Use latest kernel.
+  boot.kernelPackages = pkgs.linuxPackages_latest;
+
+  networking.hostName = "nepsis";
+  networking.networkmanager.enable = true;
+  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.
+
+  # Configure network proxy if necessary
+  # networking.proxy.default = "http://user:password@proxy:port/";
+  # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
+
+  time.timeZone = "America/Toronto";
+
+  i18n.defaultLocale = "en_CA.UTF-8";
+
+  # Define a user account. Don't forget to set a password with ‘passwd’.
+  users.users.andrew = {
+    isNormalUser = true;
+
+    extraGroups = [
+      "networkmanager"
+      "wheel"
+    ];
+    packages = with pkgs; [ ];
+  };
+
+  hjem.users.andrew = {
+    directory = "/home/andrew";
+    files = {
+
+      ".config/sxhkd/sxhkdrc".text = ''
+        super + space
+               ${pkgs.dmenu}/bin/dmenu_run
+
+        super + Return
+               ${pkgs.st}/bin/st       
+
+        super + b
+               ${pkgs.librewolf}/bin/librewolf
+
+        XF86AudioRaiseVolume
+            ${pkgs.pamixer}/bin/pamixer -i 5
+
+        XF86AudioLowerVolume
+            ${pkgs.pamixer}/bin/pamixer -d 5
+
+        XF86AudioMute
+            ${pkgs.pamixer}/bin/pamixer -t
+
+        super + s
+            ${pkgs.maim}/bin/maim -i $(${pkgs.xdotool}/bin/xdotool getactivewindow) | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png
+
+        super + shift + s
+            ${pkgs.maim}/bin/maim -s | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png
+      '';
+    };
+    packages = with pkgs; [
+      discord
+    ];
+  };
+
+  # Allow unfree packages
+  nixpkgs.config.allowUnfree = true;
+  nix.settings.experimental-features = [
+    "nix-command"
+    "flakes"
+  ];
+
+  # List packages installed in system profile. To search, run:
+  # $ nix search wget
+  environment.systemPackages = with pkgs; [
+    vim
+    nvi
+    wget
+    git
+    neovim
+    librewolf
+    nixfmt
+    st
+    dmenu
+    feh
+    fastfetch
+    sxhkd
+    betterlockscreen
+    pamixer
+    maim
+    slop
+    xclip
+    xdotool
+  ];
+
+  programs.git = {
+    enable = true;
+    config = {
+      user = {
+        name = "Skullheadx";
+        email = "admonty1@protonmail.com";
+      };
+      pull.rebase = true;
+      url = {
+        "git@github.com:".insteadOf = "https://github.com/";
+      };
+
+    };
+  };
+
+  programs.i3lock = {
+    enable = true;
+    package = pkgs.i3lock-color;
+  };
+
+  programs.steam = {
+    enable = true;
+    remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
+    dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
+    localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
+  };
+
+  programs.nix-ld.enable = true;
+  programs.nix-ld.libraries = with pkgs; [
+    # Add any missing dynamic libraries for unpackaged
+    # programs here, NOT in environment.systemPackages
+  ];
+
+  services.pipewire = {
+    enable = true;
+    audio.enable = true;
+    pulse.enable = true;
+    alsa.enable = true;
+  };
+  services.pipewire.wireplumber.enable = true;
+  hardware = {
+    graphics = {
+      enable = true;
+    };
+  };
+
+  # Some programs need SUID wrappers, can be configured further or are
+  # started in user sessions.
+  # programs.mtr.enable = true;
+  programs.gnupg.agent = {
+    enable = true;
+    enableSSHSupport = true;
+  };
+
+  # Services
+  services.openssh.enable = true;
+
+  services.displayManager.ly = {
+    enable = true;
+    settings = {
+      animation = "gameoflife";
+      clock = "%c";
+      vi_mode = true;
+      vi_default_mode = "insert";
+      numlock = true;
+      bigclock = "en";
+      bigclock_seconds = true;
+    };
+
+  };
+  services.dunst = {
+    enable = true;
+  };
+  security.pam.services.betterlockscreen = { };
+
+  services.xserver = {
+    enable = true;
+    autorun = true;
+    enableTearFree = true;
+    windowManager.dwm.enable = true;
+    desktopManager.runXdgAutostartIfNone = false;
+    displayManager = {
+      setupCommands = '''';
+      sessionCommands = ''
+                       #!/bin/sh
+                       ${pkgs.xrandr}/bin/xrandr --output DP-3 --primary --mode 2560x1440 --rate 180 --pos 0x0 --output DP-2 --mode 1920x1080 --rate 160 --pos 2560x360
+                       ${pkgs.feh}/bin/feh --no-fehbg --bg-fill '/home/andrew/Wallpapers/Daniel_in_the_Lions_Den_by_Briton_Riviere.jpg'
+                       ${pkgs.sxhkd}/bin/sxhkd &
+      '';
+    };
+    xkb = {
+      layout = "us";
+      options = "caps:escape";
+    };
+    xautolock = {
+      enable = true;
+      enableNotifier = true;
+      notifier = "${pkgs.dunst}/bin/notify-send 'Locking in 10 seconds'";
+      locker = "${pkgs.betterlockscreen}/bin/betterlockscreen -l dimblur";
+    };
+    config = ''
+      Section "InputClass"
+        Identifier "Kinesis Advantage 360"
+        MatchIsKeyboard "on"
+        MatchVendor "Kinesis"
+        Option "XkbModel" "kinesis"
+        Option "XkbLayout" "us"
+      EndSection
+    '';
+  };
+
+  # Open ports in the firewall.
+  # networking.firewall.allowedTCPPorts = [ ... ];
+  # networking.firewall.allowedUDPPorts = [ ... ];
+  # Or disable the firewall altogether.
+  # networking.firewall.enable = false;
+
+  # This value determines the NixOS release from which the default
+  # settings for stateful data, like file locations and database versions
+  # on your system were taken. It‘s perfectly fine and recommended to leave
+  # this value at the release version of the first install of this system.
+  # Before changing this value read the documentation for this option
+  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
+  system.stateVersion = "25.05"; # Did you read the comment?
+}
diff --git a/flake.lock b/flake.lock
new file mode 100644 (file)
index 0000000..e38c7e3
--- /dev/null
@@ -0,0 +1,70 @@
+{
+  "nodes": {
+    "hjem": {
+      "inputs": {
+        "nix-darwin": "nix-darwin",
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1777061801,
+        "narHash": "sha256-a0O56qWfPEKe0mBKgvcQL5UDpWmon70AKJspHNkEJV8=",
+        "owner": "feel-co",
+        "repo": "hjem",
+        "rev": "35c2158ba101d7b42b05debfcb169ba32dad3bbc",
+        "type": "github"
+      },
+      "original": {
+        "owner": "feel-co",
+        "repo": "hjem",
+        "type": "github"
+      }
+    },
+    "nix-darwin": {
+      "inputs": {
+        "nixpkgs": [
+          "hjem",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1775037210,
+        "narHash": "sha256-KM2WYj6EA7M/FVZVCl3rqWY+TFV5QzSyyGE2gQxeODU=",
+        "owner": "nix-darwin",
+        "repo": "nix-darwin",
+        "rev": "06648f4902343228ce2de79f291dd5a58ee12146",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-darwin",
+        "repo": "nix-darwin",
+        "type": "github"
+      }
+    },
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1776877367,
+        "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "root": {
+      "inputs": {
+        "hjem": "hjem",
+        "nixpkgs": "nixpkgs"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644 (file)
index 0000000..392ffc7
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,26 @@
+{
+  description = "Based and Minimal Flake";
+
+  inputs = {
+    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
+    hjem = {
+      url = "github:feel-co/hjem";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
+
+  };
+  outputs =
+    {
+      self,
+      nixpkgs,
+      hjem,
+    }@inputs:
+    {
+      nixosConfigurations.nepsis = nixpkgs.lib.nixosSystem {
+        modules = [
+          hjem.nixosModules.default
+          ./configuration.nix
+        ];
+      };
+    };
+}
diff --git a/hardware-configuration.nix b/hardware-configuration.nix
new file mode 100644 (file)
index 0000000..9e77966
--- /dev/null
@@ -0,0 +1,57 @@
+# 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"
+    "ahci"
+    "usbhid"
+    "usb_storage"
+    "sd_mod"
+  ];
+  boot.initrd.kernelModules = [ ];
+  boot.kernelModules = [ "kvm-amd" ];
+  boot.extraModulePackages = [ ];
+
+  fileSystems."/" = {
+    device = "/dev/disk/by-uuid/a0aa3a6b-4970-4c7d-b793-57561ed4ae03";
+    fsType = "ext4";
+  };
+
+  fileSystems."/boot" = {
+    device = "/dev/disk/by-uuid/5239-A4D8";
+    fsType = "vfat";
+    options = [
+      "fmask=0077"
+      "dmask=0077"
+    ];
+  };
+
+  swapDevices = [
+    { device = "/dev/disk/by-uuid/1efeebba-c2ce-4ab9-87d6-e986933d7678"; }
+  ];
+
+  # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+  # (the default) this is the recommended approach. When using systemd-networkd it's
+  # still possible to use this option, but it's recommended to use it in conjunction
+  # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+  networking.useDHCP = lib.mkDefault true;
+  # networking.interfaces.enp10s0.useDHCP = lib.mkDefault true;
+  # networking.interfaces.wlp9s0.useDHCP = lib.mkDefault true;
+
+  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+  hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/todo b/todo
new file mode 100644 (file)
index 0000000..86b80f2
--- /dev/null
+++ b/todo
@@ -0,0 +1,19 @@
+- [x] Fix monitor refresh rates
+- [x] screen tearing
+- [x] grub disable secondary monitor
+- [ ] setup shell
+- [ ] setup dmenu
+- [x] fix keepassxc from opening even when not installed
+- [x] swapping windows between monitors
+- [ ] statusbar
+- [ ] configure kinesis keyboard to work with dwm
+- [ ] hotkeys with sxhkd
+       - [ ] screenshot
+       - [ ] lockscreen
+       - [x] dmenu run
+- [ ] integrate with dotfiles git repo
+- [ ] browser (surf?)
+       - [ ] umatrix vs ublock
+- [ ] dunst notifs
+- [ ] get the dwm, st and other suckless stuff as own src
+