Compare commits
	
		
			1 Commits
		
	
	
		
			master
			...
			gitea_typs
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f601854156 | 
@ -2,8 +2,7 @@
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
@ -15,10 +14,7 @@
 | 
			
		||||
    gc.automatic = true;
 | 
			
		||||
    gc.options = "--delete-older-than 7d";
 | 
			
		||||
    package = pkgs.nixVersions.latest;
 | 
			
		||||
    settings.experimental-features = [
 | 
			
		||||
      "nix-command"
 | 
			
		||||
      "flakes"
 | 
			
		||||
    ];
 | 
			
		||||
    settings.experimental-features = ["nix-command" "flakes"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  boot = {
 | 
			
		||||
@ -57,16 +53,15 @@
 | 
			
		||||
  networking = {
 | 
			
		||||
    firewall.enable = true;
 | 
			
		||||
    hostName = "blue";
 | 
			
		||||
    nameservers = [
 | 
			
		||||
      "127.0.0.1"
 | 
			
		||||
      "::1"
 | 
			
		||||
    ];
 | 
			
		||||
    nameservers = ["127.0.0.1" "::1"];
 | 
			
		||||
    dhcpcd.extraConfig = "nohook resolv.conf";
 | 
			
		||||
 | 
			
		||||
    networkmanager = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      dns = "none";
 | 
			
		||||
      # wifi.backend = "iwd";
 | 
			
		||||
      /*
 | 
			
		||||
      wifi.backend = "iwd";
 | 
			
		||||
      */
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -157,10 +152,7 @@
 | 
			
		||||
      windowManager.i3.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    udev.packages = [
 | 
			
		||||
      pkgs.rtl-sdr
 | 
			
		||||
      pkgs.openhantek6022
 | 
			
		||||
    ];
 | 
			
		||||
    udev.packages = [pkgs.rtl-sdr pkgs.openhantek6022];
 | 
			
		||||
 | 
			
		||||
    tlp = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
@ -177,19 +169,13 @@
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          keys = [114];
 | 
			
		||||
          events = [
 | 
			
		||||
            "key"
 | 
			
		||||
            "rep"
 | 
			
		||||
          ];
 | 
			
		||||
          events = ["key" "rep"];
 | 
			
		||||
          command = "/run/current-system/sw/bin/runuser -l akill -c 'amixer -q set Master 5%- unmute'";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          keys = [115];
 | 
			
		||||
          events = [
 | 
			
		||||
            "key"
 | 
			
		||||
            "rep"
 | 
			
		||||
          ];
 | 
			
		||||
          events = ["key" "rep"];
 | 
			
		||||
          command = "/run/current-system/sw/bin/runuser -l akill -c 'amixer -q set Master 5%+ unmute'";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -320,14 +306,6 @@
 | 
			
		||||
  users.users.akill = {
 | 
			
		||||
    isNormalUser = true;
 | 
			
		||||
    shell = pkgs.zsh;
 | 
			
		||||
    extraGroups = [
 | 
			
		||||
      "wireshark"
 | 
			
		||||
      "kvm"
 | 
			
		||||
      "tty"
 | 
			
		||||
      "audio"
 | 
			
		||||
      "sound"
 | 
			
		||||
      "adbusers"
 | 
			
		||||
      "dialout"
 | 
			
		||||
    ];
 | 
			
		||||
    extraGroups = ["wireshark" "kvm" "tty" "audio" "sound" "adbusers" "dialout"];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -6,21 +6,12 @@
 | 
			
		||||
  lib,
 | 
			
		||||
  modulesPath,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    (modulesPath + "/installer/scan/not-detected.nix")
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  boot.initrd.availableKernelModules = [
 | 
			
		||||
    "xhci_pci"
 | 
			
		||||
    "ahci"
 | 
			
		||||
    "nvme"
 | 
			
		||||
    "usbhid"
 | 
			
		||||
    "usb_storage"
 | 
			
		||||
    "sd_mod"
 | 
			
		||||
    "sr_mod"
 | 
			
		||||
  ];
 | 
			
		||||
  boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "sr_mod"];
 | 
			
		||||
  boot.initrd.kernelModules = [];
 | 
			
		||||
  boot.kernelModules = ["kvm-intel"];
 | 
			
		||||
  boot.extraModulePackages = [];
 | 
			
		||||
@ -28,55 +19,34 @@
 | 
			
		||||
  fileSystems."/" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/0af4dcb9-6e59-4946-87b2-0d2f14b808d4";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=root"
 | 
			
		||||
      "compress=zstd"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=root" "compress=zstd" "noatime"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  boot.initrd.luks.devices."enc_root".device =
 | 
			
		||||
    "/dev/disk/by-uuid/8eb8ac22-d89d-4406-bfbd-ce43e283649f";
 | 
			
		||||
  boot.initrd.luks.devices."enc_root".device = "/dev/disk/by-uuid/8eb8ac22-d89d-4406-bfbd-ce43e283649f";
 | 
			
		||||
 | 
			
		||||
  fileSystems."/home" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/0af4dcb9-6e59-4946-87b2-0d2f14b808d4";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=home"
 | 
			
		||||
      "compress=zstd"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=home" "compress=zstd" "noatime"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/nix" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/0af4dcb9-6e59-4946-87b2-0d2f14b808d4";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=nix"
 | 
			
		||||
      "compress=zstd"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=nix" "compress=zstd" "noatime"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/var/log" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/0af4dcb9-6e59-4946-87b2-0d2f14b808d4";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=log"
 | 
			
		||||
      "compress=zstd"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=log" "compress=zstd" "noatime"];
 | 
			
		||||
    neededForBoot = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/persist" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/0af4dcb9-6e59-4946-87b2-0d2f14b808d4";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=persist"
 | 
			
		||||
      "compress=zstd"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=persist" "compress=zstd" "noatime"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/boot" = {
 | 
			
		||||
 | 
			
		||||
@ -3,17 +3,10 @@
 | 
			
		||||
  nix-xilinx,
 | 
			
		||||
  system,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  environment.systemPackages =
 | 
			
		||||
    with pkgs;
 | 
			
		||||
}: {
 | 
			
		||||
  environment.systemPackages = with pkgs;
 | 
			
		||||
    [
 | 
			
		||||
      onboard
 | 
			
		||||
      maliit-keyboard
 | 
			
		||||
      maliit-framework
 | 
			
		||||
      wvkbd
 | 
			
		||||
      acpi
 | 
			
		||||
      aria2
 | 
			
		||||
      binutils
 | 
			
		||||
      binwalk
 | 
			
		||||
      bluez
 | 
			
		||||
@ -28,7 +21,6 @@
 | 
			
		||||
      dnsmasq
 | 
			
		||||
      dnsutils
 | 
			
		||||
      dtach
 | 
			
		||||
      ethtool
 | 
			
		||||
      f2fs-tools
 | 
			
		||||
      fd
 | 
			
		||||
      file
 | 
			
		||||
@ -99,11 +91,5 @@
 | 
			
		||||
      zip
 | 
			
		||||
      z-lua
 | 
			
		||||
    ]
 | 
			
		||||
    ++ (with nix-xilinx.packages.${system}; [
 | 
			
		||||
      vivado
 | 
			
		||||
      vitis
 | 
			
		||||
      vitis_hls
 | 
			
		||||
      model_composer
 | 
			
		||||
      xilinx-shell
 | 
			
		||||
    ]);
 | 
			
		||||
    ++ (with nix-xilinx.packages.${system}; [vivado vitis vitis_hls model_composer xilinx-shell]);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,11 +4,9 @@
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib;
 | 
			
		||||
let
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.services.batteryNotifier;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
in {
 | 
			
		||||
  options = {
 | 
			
		||||
    services.batteryNotifier = {
 | 
			
		||||
      enable = mkOption {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										170
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										170
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							@ -35,11 +35,11 @@
 | 
			
		||||
    "flake-compat_2": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1747046372,
 | 
			
		||||
        "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
 | 
			
		||||
        "lastModified": 1673956053,
 | 
			
		||||
        "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
 | 
			
		||||
        "owner": "edolstra",
 | 
			
		||||
        "repo": "flake-compat",
 | 
			
		||||
        "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
 | 
			
		||||
        "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@ -48,51 +48,37 @@
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "git-hooks": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-compat": [
 | 
			
		||||
          "simple-nixos-mailserver",
 | 
			
		||||
          "flake-compat"
 | 
			
		||||
        ],
 | 
			
		||||
        "gitignore": "gitignore",
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "simple-nixos-mailserver",
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
    "flake-compat_3": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1750779888,
 | 
			
		||||
        "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
 | 
			
		||||
        "owner": "cachix",
 | 
			
		||||
        "repo": "git-hooks.nix",
 | 
			
		||||
        "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
 | 
			
		||||
        "lastModified": 1696426674,
 | 
			
		||||
        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
 | 
			
		||||
        "owner": "edolstra",
 | 
			
		||||
        "repo": "flake-compat",
 | 
			
		||||
        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "cachix",
 | 
			
		||||
        "repo": "git-hooks.nix",
 | 
			
		||||
        "owner": "edolstra",
 | 
			
		||||
        "repo": "flake-compat",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "gitignore": {
 | 
			
		||||
    "flake-utils": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "simple-nixos-mailserver",
 | 
			
		||||
          "git-hooks",
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
        "systems": "systems"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1709087332,
 | 
			
		||||
        "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
 | 
			
		||||
        "owner": "hercules-ci",
 | 
			
		||||
        "repo": "gitignore.nix",
 | 
			
		||||
        "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
 | 
			
		||||
        "lastModified": 1681202837,
 | 
			
		||||
        "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "hercules-ci",
 | 
			
		||||
        "repo": "gitignore.nix",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
@ -103,16 +89,15 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1755928099,
 | 
			
		||||
        "narHash": "sha256-OILVkfhRCm8u18IZ2DKR8gz8CVZM2ZcJmQBXmjFLIfk=",
 | 
			
		||||
        "lastModified": 1730016908,
 | 
			
		||||
        "narHash": "sha256-bFCxJco7d8IgmjfNExNz9knP8wvwbXU4s/d53KOK6U0=",
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "repo": "home-manager",
 | 
			
		||||
        "rev": "4a44fb9f7555da362af9d499817084f4288a957f",
 | 
			
		||||
        "rev": "e83414058edd339148dc142a8437edb9450574c8",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "ref": "release-25.05",
 | 
			
		||||
        "repo": "home-manager",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
@ -140,32 +125,47 @@
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1755922037,
 | 
			
		||||
        "narHash": "sha256-wY1+2JPH0ZZC4BQefoZw/k+3+DowFyfOxv17CN/idKs=",
 | 
			
		||||
        "lastModified": 1732981179,
 | 
			
		||||
        "narHash": "sha256-F7thesZPvAMSwjRu0K8uFshTk3ZZSNAsXTIFvXBT+34=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "b1b3291469652d5a2edb0becc4ef0246fff97a7c",
 | 
			
		||||
        "rev": "62c435d93bf046a5396f3016472e8f7c8e2aed65",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "ref": "nixos-25.05",
 | 
			
		||||
        "ref": "nixos-24.11",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs-25_05": {
 | 
			
		||||
    "nixpkgs-24_05": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1753749649,
 | 
			
		||||
        "narHash": "sha256-+jkEZxs7bfOKfBIk430K+tK9IvXlwzqQQnppC2ZKFj4=",
 | 
			
		||||
        "lastModified": 1717144377,
 | 
			
		||||
        "narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "1f08a4df998e21f4e8be8fb6fbf61d11a1a5076a",
 | 
			
		||||
        "rev": "805a384895c696f802a9bf5bf4720f37385df547",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "id": "nixpkgs",
 | 
			
		||||
        "ref": "nixos-24.05",
 | 
			
		||||
        "type": "indirect"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs-stable": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1729973466,
 | 
			
		||||
        "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "cd3e8833d70618c4eea8df06f95b364b016d4950",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "ref": "nixos-25.05",
 | 
			
		||||
        "ref": "release-24.05",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
@ -177,11 +177,11 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1756466297,
 | 
			
		||||
        "narHash": "sha256-3K54DWzsAvphmLuRDAU+QjR9vAd8XDXVSCIN0olTfBM=",
 | 
			
		||||
        "lastModified": 1733261583,
 | 
			
		||||
        "narHash": "sha256-HOVUtrhtJ16umPuEODuVE9fx+JmDCRp7wIxnEART0Eg=",
 | 
			
		||||
        "ref": "refs/heads/master",
 | 
			
		||||
        "rev": "a595413b88bdf05c2f35d2bba467519a6a03dd9e",
 | 
			
		||||
        "revCount": 46,
 | 
			
		||||
        "rev": "a09a34997ce692c7a2e8e434b44433156a73088c",
 | 
			
		||||
        "revCount": 38,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.project-cloud.net/asmir/nvim_flake"
 | 
			
		||||
      },
 | 
			
		||||
@ -190,6 +190,28 @@
 | 
			
		||||
        "url": "https://git.project-cloud.net/asmir/nvim_flake"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "peerix": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-compat": "flake-compat_2",
 | 
			
		||||
        "flake-utils": "flake-utils",
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1684706914,
 | 
			
		||||
        "narHash": "sha256-pBlTtsC28e/5MUTe4NWeNNOc/4Kf6EzGQGppQEQ/ioo=",
 | 
			
		||||
        "owner": "asmir.abdulahovic",
 | 
			
		||||
        "repo": "peerix",
 | 
			
		||||
        "rev": "8fdbbd0039240e05b4f93bbd5b454d5643e8a8d1",
 | 
			
		||||
        "type": "gitlab"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "asmir.abdulahovic",
 | 
			
		||||
        "repo": "peerix",
 | 
			
		||||
        "type": "gitlab"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "project-cloud": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
@ -218,6 +240,7 @@
 | 
			
		||||
        "nix-xilinx": "nix-xilinx",
 | 
			
		||||
        "nixpkgs": "nixpkgs",
 | 
			
		||||
        "nvim": "nvim",
 | 
			
		||||
        "peerix": "peerix",
 | 
			
		||||
        "project-cloud": "project-cloud",
 | 
			
		||||
        "simple-nixos-mailserver": "simple-nixos-mailserver",
 | 
			
		||||
        "sops-nix": "sops-nix",
 | 
			
		||||
@ -228,19 +251,18 @@
 | 
			
		||||
    "simple-nixos-mailserver": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "blobs": "blobs",
 | 
			
		||||
        "flake-compat": "flake-compat_2",
 | 
			
		||||
        "git-hooks": "git-hooks",
 | 
			
		||||
        "flake-compat": "flake-compat_3",
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ],
 | 
			
		||||
        "nixpkgs-25_05": "nixpkgs-25_05"
 | 
			
		||||
        "nixpkgs-24_05": "nixpkgs-24_05"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1756130152,
 | 
			
		||||
        "narHash": "sha256-3qcN28djoBqqhEqOv8ve3/+wD0lLR2YCVV1EZ4SYfjo=",
 | 
			
		||||
        "lastModified": 1722877200,
 | 
			
		||||
        "narHash": "sha256-qgKDNJXs+od+1UbRy62uk7dYal3h98I4WojfIqMoGcg=",
 | 
			
		||||
        "owner": "simple-nixos-mailserver",
 | 
			
		||||
        "repo": "nixos-mailserver",
 | 
			
		||||
        "rev": "b49ae46f226430854102c207fdcb55e2de8e884e",
 | 
			
		||||
        "rev": "af7d3bf5daeba3fc28089b015c0dd43f06b176f2",
 | 
			
		||||
        "type": "gitlab"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@ -253,14 +275,15 @@
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
        ],
 | 
			
		||||
        "nixpkgs-stable": "nixpkgs-stable"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1754988908,
 | 
			
		||||
        "narHash": "sha256-t+voe2961vCgrzPFtZxha0/kmFSHFobzF00sT8p9h0U=",
 | 
			
		||||
        "lastModified": 1729999681,
 | 
			
		||||
        "narHash": "sha256-qm0uCtM9bg97LeJTKQ8dqV/FvqRN+ompyW4GIJruLuw=",
 | 
			
		||||
        "owner": "Mic92",
 | 
			
		||||
        "repo": "sops-nix",
 | 
			
		||||
        "rev": "3223c7a92724b5d804e9988c6b447a0d09017d48",
 | 
			
		||||
        "rev": "1666d16426abe79af5c47b7c0efa82fd31bf4c56",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@ -289,6 +312,21 @@
 | 
			
		||||
        "url": "https://git.project-cloud.net/asmir/swaysw"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "systems": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1681028828,
 | 
			
		||||
        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
			
		||||
        "owner": "nix-systems",
 | 
			
		||||
        "repo": "default",
 | 
			
		||||
        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nix-systems",
 | 
			
		||||
        "repo": "default",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "theme_anemone": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
@ -328,11 +366,11 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1737802495,
 | 
			
		||||
        "narHash": "sha256-Q+bZnH7uQM5T/G+xCGSRU3bTJqD70NeE4vLXLXLCm7k=",
 | 
			
		||||
        "lastModified": 1721120316,
 | 
			
		||||
        "narHash": "sha256-CaAMnU6LKqJrsZmR9k0/2brpULnAekpgG5S0BjtFhaQ=",
 | 
			
		||||
        "ref": "refs/heads/master",
 | 
			
		||||
        "rev": "4962f12867b0b6c4c4d39b98e6016e7f925a802c",
 | 
			
		||||
        "revCount": 23,
 | 
			
		||||
        "rev": "8a7923bd4e5d36b186408d5432568a91ac67b695",
 | 
			
		||||
        "revCount": 21,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.project-cloud.net/asmir/zremap"
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										56
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								flake.nix
									
									
									
									
									
								
							@ -2,13 +2,18 @@
 | 
			
		||||
  description = "NixOS configuration";
 | 
			
		||||
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
 | 
			
		||||
    nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
 | 
			
		||||
 | 
			
		||||
    nix-xilinx = {
 | 
			
		||||
      url = "gitlab:asmir.abdulahovic/nix-xilinx";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    peerix = {
 | 
			
		||||
      url = "gitlab:asmir.abdulahovic/peerix";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    zremap = {
 | 
			
		||||
      url = "git+https://git.project-cloud.net/asmir/zremap";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
@ -30,7 +35,7 @@
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    home-manager = {
 | 
			
		||||
      url = "github:nix-community/home-manager/release-25.05";
 | 
			
		||||
      url = "github:nix-community/home-manager";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@ -45,23 +50,21 @@
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs =
 | 
			
		||||
    inputs@{
 | 
			
		||||
  outputs = inputs @ {
 | 
			
		||||
    home-manager,
 | 
			
		||||
    nixpkgs,
 | 
			
		||||
    nix-xilinx,
 | 
			
		||||
    nvim,
 | 
			
		||||
    peerix,
 | 
			
		||||
    project-cloud,
 | 
			
		||||
    simple-nixos-mailserver,
 | 
			
		||||
    sops-nix,
 | 
			
		||||
    swaysw,
 | 
			
		||||
    zremap,
 | 
			
		||||
    ...
 | 
			
		||||
    }:
 | 
			
		||||
    let
 | 
			
		||||
  }: let
 | 
			
		||||
    pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs;
 | 
			
		||||
    in
 | 
			
		||||
    {
 | 
			
		||||
  in {
 | 
			
		||||
    nixosConfigurations = rec {
 | 
			
		||||
      nixy = nixpkgs.lib.nixosSystem rec {
 | 
			
		||||
        system = "x86_64-linux";
 | 
			
		||||
@ -78,10 +81,22 @@
 | 
			
		||||
          {
 | 
			
		||||
            home-manager.useGlobalPkgs = true;
 | 
			
		||||
            home-manager.useUserPackages = true;
 | 
			
		||||
              home-manager.users.akill = import ./home/nixy/home.nix;
 | 
			
		||||
            home-manager.users.akill = import ./home/home.nix;
 | 
			
		||||
            home-manager.extraSpecialArgs = {inherit inputs system;};
 | 
			
		||||
            home-manager.backupFileExtension = "home_backup";
 | 
			
		||||
          }
 | 
			
		||||
          peerix.nixosModules.peerix
 | 
			
		||||
          {
 | 
			
		||||
            services.peerix = {
 | 
			
		||||
              enable = true;
 | 
			
		||||
              globalCacheTTL = 10;
 | 
			
		||||
              package = peerix.packages.x86_64-linux.peerix;
 | 
			
		||||
              openFirewall = true; # UDP/12304
 | 
			
		||||
              privateKeyFile = nixy.config.sops.secrets."peerix/private".path;
 | 
			
		||||
              publicKeyFile = ./nixy/peerix-public;
 | 
			
		||||
              publicKey = "peerix-mediabox:UDgG3xdQYv7bmx2l4ZPNRPJtp2zMmY++H/fnGeJ9BQw=";
 | 
			
		||||
            };
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
@ -101,9 +116,21 @@
 | 
			
		||||
          {
 | 
			
		||||
            home-manager.useGlobalPkgs = true;
 | 
			
		||||
            home-manager.useUserPackages = true;
 | 
			
		||||
              home-manager.users.akill = import ./home/mediabox/home.nix;
 | 
			
		||||
            home-manager.users.akill = import ./home/home.nix;
 | 
			
		||||
            home-manager.extraSpecialArgs = {inherit inputs system;};
 | 
			
		||||
          }
 | 
			
		||||
          peerix.nixosModules.peerix
 | 
			
		||||
          {
 | 
			
		||||
            services.peerix = {
 | 
			
		||||
              enable = true;
 | 
			
		||||
              globalCacheTTL = 10;
 | 
			
		||||
              package = peerix.packages.x86_64-linux.peerix;
 | 
			
		||||
              openFirewall = true; # UDP/12304
 | 
			
		||||
              privateKeyFile = mediabox.config.sops.secrets."peerix/private".path;
 | 
			
		||||
              publicKeyFile = ./mediabox/peerix-public;
 | 
			
		||||
              publicKey = "peerix-nixy:8THqS0R2zWF/47ai0RFmqJnieYTZ1jaWOD9tnzpvA6s=";
 | 
			
		||||
            };
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
@ -120,12 +147,11 @@
 | 
			
		||||
          {
 | 
			
		||||
            home-manager.useGlobalPkgs = true;
 | 
			
		||||
            home-manager.useUserPackages = true;
 | 
			
		||||
              home-manager.users.akill = import ./home/blue/home.nix;
 | 
			
		||||
            home-manager.users.akill = import ./home/home.nix;
 | 
			
		||||
            home-manager.extraSpecialArgs = {inherit inputs system;};
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      magpie = nixpkgs.lib.nixosSystem rec {
 | 
			
		||||
        system = "aarch64-linux";
 | 
			
		||||
        modules = [
 | 
			
		||||
@ -142,11 +168,7 @@
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    devShell.x86_64-linux = pkgs.mkShell {
 | 
			
		||||
        buildInputs = with pkgs; [
 | 
			
		||||
          sops
 | 
			
		||||
          ssh-to-age
 | 
			
		||||
          age
 | 
			
		||||
        ];
 | 
			
		||||
      buildInputs = with pkgs; [sops ssh-to-age age];
 | 
			
		||||
      shellHook = ''
 | 
			
		||||
        echo "Configuring NixOS!"
 | 
			
		||||
      '';
 | 
			
		||||
 | 
			
		||||
@ -1,120 +0,0 @@
 | 
			
		||||
{ pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.z-lua = {
 | 
			
		||||
    enableAliases = true;
 | 
			
		||||
    enableZshIntegration = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  programs.zsh = {
 | 
			
		||||
    autocd = true;
 | 
			
		||||
    enableCompletion = false;
 | 
			
		||||
    defaultKeymap = "viins";
 | 
			
		||||
 | 
			
		||||
    shellAliases = {
 | 
			
		||||
      cfind = "${pkgs.cscope}/bin/cscope -C -R -L1";
 | 
			
		||||
      chmod = "chmod -v";
 | 
			
		||||
      chown = "chown -v";
 | 
			
		||||
      cp = "cp -v";
 | 
			
		||||
      rm = "rm -v";
 | 
			
		||||
      ip = "ip --color=auto";
 | 
			
		||||
      f = "''$(${lib.getExe pkgs.pay-respects} zsh)";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    history = {
 | 
			
		||||
      expireDuplicatesFirst = true;
 | 
			
		||||
      extended = true;
 | 
			
		||||
      save = 100000;
 | 
			
		||||
      size = 100000;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    plugins = [
 | 
			
		||||
      {
 | 
			
		||||
        name = "nix_shell";
 | 
			
		||||
        src = pkgs.zsh-nix-shell;
 | 
			
		||||
        file = "share/zsh-nix-shell/nix-shell.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "nix_completion";
 | 
			
		||||
        src = pkgs.nix-zsh-completions;
 | 
			
		||||
        file = "share/zsh/plugins/nix/nix-zsh-completions.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "pure_prompt";
 | 
			
		||||
        src = pkgs.fetchFromGitHub {
 | 
			
		||||
          owner = "sindresorhus";
 | 
			
		||||
          repo = "pure";
 | 
			
		||||
          rev = "92b8e9057988566b37ff695e70e2e9bbeb7196c8";
 | 
			
		||||
          hash = "sha256-TbOrnhLHgOvcfsgmL0l3bWY33yLIhG1KSi4ITIPq1+A=";
 | 
			
		||||
        };
 | 
			
		||||
        file = "pure.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "fzf";
 | 
			
		||||
        src = pkgs.fzf-zsh;
 | 
			
		||||
        file = "share/zsh/plugins/fzf-zsh/fzf-zsh.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "zsh-sudo";
 | 
			
		||||
        src = pkgs.fetchFromGitHub {
 | 
			
		||||
          owner = "hcgraf";
 | 
			
		||||
          repo = "zsh-sudo";
 | 
			
		||||
          rev = "d8084def6bb1bde2482e7aa636743f40c69d9b32";
 | 
			
		||||
          sha256 = "1dpm51w3wjxil8sxqw4qxim5kmf6afmkwz1yfhldpdlqm7rfwpi3";
 | 
			
		||||
        };
 | 
			
		||||
        file = "sudo.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "zsh-fast-syntax-highlighting";
 | 
			
		||||
        src = pkgs.zsh-fast-syntax-highlighting;
 | 
			
		||||
        file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    envExtra = '''';
 | 
			
		||||
 | 
			
		||||
    initContent = ''
 | 
			
		||||
      # binds
 | 
			
		||||
      bindkey '^K' fzf-file-widget
 | 
			
		||||
 | 
			
		||||
      # options
 | 
			
		||||
      setopt nobeep
 | 
			
		||||
      setopt nopromptcr
 | 
			
		||||
      setopt c_bases
 | 
			
		||||
      setopt completeinword
 | 
			
		||||
      setopt completealiases
 | 
			
		||||
      setopt notify
 | 
			
		||||
 | 
			
		||||
      #
 | 
			
		||||
      RPS1=""
 | 
			
		||||
 | 
			
		||||
      #
 | 
			
		||||
      function chpwd() {
 | 
			
		||||
        ls;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      function osc7-pwd() {
 | 
			
		||||
       emulate -L zsh # also sets localoptions for us
 | 
			
		||||
       setopt extendedglob
 | 
			
		||||
       local LC_ALL=C
 | 
			
		||||
       printf '\e]7;file://%s%s\e\' $HOST ''${PWD//(#m)([^@-Za-z&-;_~])/%''${(l:2::0:)''$(([##16]#MATCH))}}
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      function chpwd-osc7-pwd() {
 | 
			
		||||
        (( ZSH_SUBSHELL )) || osc7-pwd
 | 
			
		||||
      }
 | 
			
		||||
      add-zsh-hook -Uz chpwd chpwd-osc7-pwd
 | 
			
		||||
 | 
			
		||||
      eval "$(direnv hook zsh)"
 | 
			
		||||
      zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
 | 
			
		||||
 | 
			
		||||
      if [[ -n "$PS1" ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
 | 
			
		||||
        TMUX_EXE="${lib.getExe pkgs.tmux}"
 | 
			
		||||
        systemd-run --scope --user $TMUX_EXE attach-session -t $USER || systemd-run --scope --user $TMUX_EXE new-session -s $USER
 | 
			
		||||
      fi
 | 
			
		||||
 | 
			
		||||
      if [[ -n "$BUBBLEWRAP_DIR" ]]; then
 | 
			
		||||
        RPS1="{{$BUBBLEWRAP_DIR}}"
 | 
			
		||||
      fi
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -2,21 +2,12 @@
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
}: let
 | 
			
		||||
  qutebrowser_firejail = pkgs.writeShellScriptBin "qutebrowser" ''
 | 
			
		||||
    firejail -- ${lib.getExe pkgs.qutebrowser} "$@"
 | 
			
		||||
  '';
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../common/zsh.nix
 | 
			
		||||
    ../common/i3status-rust.nix
 | 
			
		||||
    ../common/sway.nix
 | 
			
		||||
    ../common/i3.nix
 | 
			
		||||
    ./home_packages.nix
 | 
			
		||||
    ../common/whatsapp-for-linux.nix
 | 
			
		||||
  ];
 | 
			
		||||
in {
 | 
			
		||||
  imports = [./zsh.nix ./i3status-rust.nix ./sway.nix ./i3.nix ./home_packages.nix ./whatsapp-for-linux.nix];
 | 
			
		||||
 | 
			
		||||
  home.stateVersion = "22.11";
 | 
			
		||||
  home.username = "akill";
 | 
			
		||||
@ -50,9 +41,7 @@ in
 | 
			
		||||
    WLR_RENDERER = "vulkan";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  wayland.windowManager.sway = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
  };
 | 
			
		||||
  wayland.windowManager.sway = {enable = true;};
 | 
			
		||||
 | 
			
		||||
  programs = {
 | 
			
		||||
    home-manager.enable = true;
 | 
			
		||||
@ -71,11 +60,7 @@ in
 | 
			
		||||
      clock24 = true;
 | 
			
		||||
      keyMode = "vi";
 | 
			
		||||
      terminal = "screen-256color";
 | 
			
		||||
      plugins = with pkgs.tmuxPlugins; [
 | 
			
		||||
        sysstat
 | 
			
		||||
        net-speed
 | 
			
		||||
        gruvbox
 | 
			
		||||
      ];
 | 
			
		||||
      plugins = with pkgs.tmuxPlugins; [sysstat net-speed gruvbox];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    mpv = {
 | 
			
		||||
@ -86,9 +71,7 @@ in
 | 
			
		||||
        hwdec = "auto";
 | 
			
		||||
        vo = "gpu-next";
 | 
			
		||||
        ao = "pipewire";
 | 
			
		||||
        osd-bar = "no";
 | 
			
		||||
        border = "no";
 | 
			
		||||
        script-opts-set = "";
 | 
			
		||||
        script-opts-set = "ytdl_hook-ytdl_path=yt-dlp,sponsorblock-local_database=no,sponsorblock-skip_categories=[sponsor,intro,selfpromo]";
 | 
			
		||||
        ytdl-format = "bestvideo[height<=?1080]+bestaudio/best";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
@ -154,14 +137,13 @@ in
 | 
			
		||||
          font = "JetBrainsMono:size=10";
 | 
			
		||||
          dpi-aware = "yes";
 | 
			
		||||
        };
 | 
			
		||||
        mouse = {
 | 
			
		||||
          hide-when-typing = "yes";
 | 
			
		||||
        };
 | 
			
		||||
        mouse = {hide-when-typing = "yes";};
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    qutebrowser = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      package = qutebrowser_firejail;
 | 
			
		||||
      keyBindings = {
 | 
			
		||||
        normal = {
 | 
			
		||||
          "j" = "scroll-px 0 25";
 | 
			
		||||
@ -201,12 +183,8 @@ in
 | 
			
		||||
      userEmail = "asmir.abdulahovic@gmail.com";
 | 
			
		||||
      extraConfig = {
 | 
			
		||||
        init.defaultBranch = "master";
 | 
			
		||||
        pull = {
 | 
			
		||||
          rebase = true;
 | 
			
		||||
        };
 | 
			
		||||
        credential = {
 | 
			
		||||
          helper = "store";
 | 
			
		||||
        };
 | 
			
		||||
        pull = {rebase = true;};
 | 
			
		||||
        credential = {helper = "store";};
 | 
			
		||||
      };
 | 
			
		||||
      signing.key = "020C42B7A9ABA3E2";
 | 
			
		||||
      signing.signByDefault = true;
 | 
			
		||||
@ -214,14 +192,7 @@ in
 | 
			
		||||
 | 
			
		||||
    obs-studio = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      plugins = with pkgs.obs-studio-plugins; [
 | 
			
		||||
        obs-vkcapture
 | 
			
		||||
        input-overlay
 | 
			
		||||
        obs-multi-rtmp
 | 
			
		||||
        obs-pipewire-audio-capture
 | 
			
		||||
        wlrobs
 | 
			
		||||
        obs-vaapi
 | 
			
		||||
      ];
 | 
			
		||||
      plugins = with pkgs.obs-studio-plugins; [obs-vkcapture input-overlay obs-multi-rtmp obs-pipewire-audio-capture wlrobs obs-vaapi];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    i3status-rust.enable = true;
 | 
			
		||||
@ -249,30 +220,14 @@ in
 | 
			
		||||
      enableSshSupport = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    swayidle =
 | 
			
		||||
      let
 | 
			
		||||
    swayidle = let
 | 
			
		||||
      locker = pkgs.writeShellScriptBin "swaylock_fancy" ''
 | 
			
		||||
          ALL_IMGS=""
 | 
			
		||||
          LOCK_ARGS=""
 | 
			
		||||
          for OUTPUT in $(${pkgs.sway}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[].name')
 | 
			
		||||
          do
 | 
			
		||||
        TMP_FILE=$(${pkgs.coreutils}/bin/mktemp /tmp/.swaylock_ss_XXXXXX.jpg)
 | 
			
		||||
            ${lib.getExe pkgs.grim} -t ppm -o $OUTPUT - | \
 | 
			
		||||
              ${lib.getExe pkgs.ffmpeg} -y -loglevel 0 -i - -vframes 1 -vf "boxblur=10" "$TMP_FILE"
 | 
			
		||||
            LOCK_ARGS="$LOCK_ARGS --image $OUTPUT:$TMP_FILE"
 | 
			
		||||
            ALL_IMGS="$ALL_IMGS $TMP_FILE"
 | 
			
		||||
          done
 | 
			
		||||
            ${lib.getExe pkgs.swaylock} -f $LOCK_ARGS
 | 
			
		||||
            ${pkgs.coreutils}/bin/shred $ALL_IMGS
 | 
			
		||||
            ${pkgs.coreutils}/bin/rm $ALL_IMGS
 | 
			
		||||
        ${lib.getExe pkgs.grim} -t ppm - | ${pkgs.imagemagick}/bin/convert - -blur 0x12 "$TMP_FILE"
 | 
			
		||||
        ${lib.getExe pkgs.swaylock} -f -i "$TMP_FILE"
 | 
			
		||||
        ${pkgs.coreutils}/bin/rm "$TMP_FILE"
 | 
			
		||||
      '';
 | 
			
		||||
      in
 | 
			
		||||
      /*
 | 
			
		||||
        refresh_i3status = pkgs.writeShellScriptBin "refresh_i3status" ''
 | 
			
		||||
          ${pkgs.coreutils}/bin/sleep 1 && ${pkgs.procps}/bin/pkill -USR1 i3status-rs
 | 
			
		||||
        '';
 | 
			
		||||
      */
 | 
			
		||||
      {
 | 
			
		||||
    in {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      events = [
 | 
			
		||||
        {
 | 
			
		||||
@ -283,12 +238,10 @@ in
 | 
			
		||||
          event = "lock";
 | 
			
		||||
          command = "${locker}/bin/swaylock_fancy";
 | 
			
		||||
        }
 | 
			
		||||
          /*
 | 
			
		||||
        {
 | 
			
		||||
          event = "after-resume";
 | 
			
		||||
              command = "${refresh_i3status}/bin/refresh_i3status";
 | 
			
		||||
          command = "${pkgs.procps}/bin/pkill -USR1 i3status-rs";
 | 
			
		||||
        }
 | 
			
		||||
          */
 | 
			
		||||
      ];
 | 
			
		||||
      timeouts = [
 | 
			
		||||
        {
 | 
			
		||||
@ -315,17 +268,14 @@ in
 | 
			
		||||
          profile.outputs = [
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "eDP-1";
 | 
			
		||||
              position = "0,0";
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026536";
 | 
			
		||||
              mode = "1920x1080@74.973Hz";
 | 
			
		||||
              position = "1920,0";
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026535";
 | 
			
		||||
              mode = "1920x1080@74.973Hz";
 | 
			
		||||
              position = "3840,0";
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
        }
 | 
			
		||||
@ -335,17 +285,19 @@ in
 | 
			
		||||
 | 
			
		||||
  systemd.user = {
 | 
			
		||||
    services = {
 | 
			
		||||
      wayland-pipewire-idle-inhibit = {
 | 
			
		||||
        Unit.Description = "inhibit sleep while audio output is active";
 | 
			
		||||
      /*
 | 
			
		||||
       himalaya = {
 | 
			
		||||
      Unit.Description = "Himalaya new messages notifier";
 | 
			
		||||
      Service = {
 | 
			
		||||
          ExecStart = "${lib.getExe pkgs.wayland-pipewire-idle-inhibit}";
 | 
			
		||||
      ExecStart = "himalaya notify";
 | 
			
		||||
      Restart = "always";
 | 
			
		||||
      RestartSec = 10;
 | 
			
		||||
      };
 | 
			
		||||
      Install = {
 | 
			
		||||
          WantedBy = [ "graphical-session.target" ];
 | 
			
		||||
      WantedBy = [ "multi-user.target" ];
 | 
			
		||||
      };
 | 
			
		||||
      };
 | 
			
		||||
      */
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -4,8 +4,7 @@
 | 
			
		||||
  inputs,
 | 
			
		||||
  system,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
}: let
 | 
			
		||||
  chromium_teams = pkgs.writeShellScriptBin "chromium_teams" ''
 | 
			
		||||
    ${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://teams.microsoft.com/
 | 
			
		||||
  '';
 | 
			
		||||
@ -15,11 +14,6 @@ let
 | 
			
		||||
  chromium_stackfield = pkgs.writeShellScriptBin "chromium_stackfield" ''
 | 
			
		||||
    ${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://stackfield.com/
 | 
			
		||||
  '';
 | 
			
		||||
  nixy_switch = pkgs.writeShellScriptBin "nixy_switch" ''
 | 
			
		||||
    ${pkgs.util-linux}/bin/ionice -c 3 -- \
 | 
			
		||||
    ${pkgs.coreutils}/bin/nice -n 20 -- \
 | 
			
		||||
    ${lib.getExe pkgs.nixos-rebuild} --flake ./#nixy switch
 | 
			
		||||
  '';
 | 
			
		||||
  qcad = pkgs.writeShellScriptBin "qcad" ''
 | 
			
		||||
    QT_QPA_PLATFORM=xcb ${lib.getExe pkgs.qcad} $@
 | 
			
		||||
  '';
 | 
			
		||||
@ -31,9 +25,8 @@ let
 | 
			
		||||
    PROXY_PORT="1337"
 | 
			
		||||
    ${lib.getExe pkgs.openssh} -D "$PROXY_PORT" -q -N "$@"
 | 
			
		||||
  '';
 | 
			
		||||
  wrap_sh =
 | 
			
		||||
    let
 | 
			
		||||
      bubblewrap = pkgs.callPackage ../../packages/bubblewrap/default.nix { };
 | 
			
		||||
  wrap_sh = let
 | 
			
		||||
    bubblewrap = pkgs.callPackage ../packages/bubblewrap/default.nix {};
 | 
			
		||||
  in
 | 
			
		||||
    pkgs.writeShellScriptBin "wrap.sh" ''
 | 
			
		||||
      if ${pkgs.coreutils-full}/bin/test $# -ne 1; then
 | 
			
		||||
@ -48,10 +41,8 @@ let
 | 
			
		||||
        --tmp-overlay "$FULL_PATH" \
 | 
			
		||||
        "$SHELL"
 | 
			
		||||
    '';
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  home.packages =
 | 
			
		||||
    with pkgs;
 | 
			
		||||
in {
 | 
			
		||||
  home.packages = with pkgs;
 | 
			
		||||
    [
 | 
			
		||||
      anydesk
 | 
			
		||||
      appimage-run
 | 
			
		||||
@ -63,11 +54,10 @@ in
 | 
			
		||||
      cached-nix-shell
 | 
			
		||||
      caddy
 | 
			
		||||
      cargo
 | 
			
		||||
      ungoogled-chromium
 | 
			
		||||
      cmake
 | 
			
		||||
      compsize
 | 
			
		||||
      kdePackages.ark
 | 
			
		||||
      ungoogled-chromium
 | 
			
		||||
      # cura
 | 
			
		||||
      /*cura*/
 | 
			
		||||
      deluge
 | 
			
		||||
      dfu-util
 | 
			
		||||
      discord
 | 
			
		||||
@ -92,7 +82,7 @@ in
 | 
			
		||||
      imv
 | 
			
		||||
      inkscape
 | 
			
		||||
      jellyfin-media-player
 | 
			
		||||
      kdePackages.kdenlive
 | 
			
		||||
      kdenlive
 | 
			
		||||
      kicad
 | 
			
		||||
      kodi-wayland
 | 
			
		||||
      krita
 | 
			
		||||
@ -110,6 +100,7 @@ in
 | 
			
		||||
      nix-init
 | 
			
		||||
      nixpkgs-fmt
 | 
			
		||||
      nix-prefetch-git
 | 
			
		||||
      nodePackages.peerflix
 | 
			
		||||
      nom
 | 
			
		||||
      openems
 | 
			
		||||
      openocd
 | 
			
		||||
@ -129,12 +120,12 @@ in
 | 
			
		||||
      python3Packages.west
 | 
			
		||||
      remmina
 | 
			
		||||
      river
 | 
			
		||||
      rizin
 | 
			
		||||
      rtorrent
 | 
			
		||||
      sbcl
 | 
			
		||||
      screen
 | 
			
		||||
      seer
 | 
			
		||||
      sioyek
 | 
			
		||||
      skypeforlinux
 | 
			
		||||
      slurp
 | 
			
		||||
      steam-run
 | 
			
		||||
      stm32cubemx
 | 
			
		||||
@ -147,7 +138,6 @@ in
 | 
			
		||||
      thunderbird
 | 
			
		||||
      typst
 | 
			
		||||
      upx
 | 
			
		||||
      viber
 | 
			
		||||
      waybar
 | 
			
		||||
      wdisplays
 | 
			
		||||
      weechat
 | 
			
		||||
@ -163,20 +153,20 @@ in
 | 
			
		||||
      yt-dlp
 | 
			
		||||
      zapzap
 | 
			
		||||
      zathura
 | 
			
		||||
      # zeal-qt6
 | 
			
		||||
      /*zeal-qt6*/
 | 
			
		||||
      zig
 | 
			
		||||
    ]
 | 
			
		||||
    ++ [
 | 
			
		||||
      chromium_discord
 | 
			
		||||
      chromium_stackfield
 | 
			
		||||
      chromium_teams
 | 
			
		||||
      nixy_switch
 | 
			
		||||
      qcad
 | 
			
		||||
      ssh_proxy
 | 
			
		||||
      wrap_sh
 | 
			
		||||
      qcad
 | 
			
		||||
    ]
 | 
			
		||||
    ++ [
 | 
			
		||||
      inputs.swaysw.packages.${system}.swaysw
 | 
			
		||||
      (pkgs.callPackage ../../packages/bubblewrap/default.nix { })
 | 
			
		||||
      (pkgs.callPackage ../packages/viber/default.nix {})
 | 
			
		||||
      (pkgs.callPackage ../packages/bubblewrap/default.nix {})
 | 
			
		||||
    ];
 | 
			
		||||
}
 | 
			
		||||
@ -2,11 +2,9 @@
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
}: let
 | 
			
		||||
  scratchpad_cmd = "floating enable, resize set 1502 845, move position center, move scratchpad, scratchpad show";
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
in {
 | 
			
		||||
  xsession.windowManager.i3 = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.i3;
 | 
			
		||||
@ -55,28 +53,24 @@ in
 | 
			
		||||
        "${modifier}+Escape" = "workspace back_and_forth";
 | 
			
		||||
        "${modifier}+p" = "exec ${pkgs.dmenu}/bin/dmenu_run";
 | 
			
		||||
 | 
			
		||||
        "Mod4+l" =
 | 
			
		||||
          "exec i3-msg [instance=\"python3_scr\"] scratchpad show || exec alacritty --class python3_scr -e python3";
 | 
			
		||||
        "Mod4+l" = "exec i3-msg [instance=\"python3_scr\"] scratchpad show || exec alacritty --class python3_scr -e python3";
 | 
			
		||||
        "Mod4+j" = "exec i3-msg [class=\"ViberPC\"] scratchpad show || exec viber";
 | 
			
		||||
        "Mod4+m" = "exec i3-msg [class=\"Thunderbird\"] scratchpad show || exec thunderbird";
 | 
			
		||||
        "Mod4+y" =
 | 
			
		||||
          "exec i3-msg [instance=\"pulsemixer_scr\"] scratchpad show || exec alacritty --class pulsemixer_scr -e pulsemixer";
 | 
			
		||||
        "Mod4+y" = "exec i3-msg [instance=\"pulsemixer_scr\"] scratchpad show || exec alacritty --class pulsemixer_scr -e pulsemixer";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      window = {
 | 
			
		||||
        # border = 4;
 | 
			
		||||
        /*
 | 
			
		||||
        border = 4;
 | 
			
		||||
        */
 | 
			
		||||
        commands = [
 | 
			
		||||
          {
 | 
			
		||||
            command = scratchpad_cmd;
 | 
			
		||||
            criteria = {
 | 
			
		||||
              instance = "pulsemixer_scr|python3_scr";
 | 
			
		||||
            };
 | 
			
		||||
            criteria = {instance = "pulsemixer_scr|python3_scr";};
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            command = scratchpad_cmd;
 | 
			
		||||
            criteria = {
 | 
			
		||||
              class = "Thunderbird";
 | 
			
		||||
            };
 | 
			
		||||
            criteria = {class = "Thunderbird";};
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            command = scratchpad_cmd;
 | 
			
		||||
@ -87,9 +81,7 @@ in
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            command = "focus child, layout tabbed, focus";
 | 
			
		||||
            criteria = {
 | 
			
		||||
              class = "qutebrowser";
 | 
			
		||||
            };
 | 
			
		||||
            criteria = {class = "qutebrowser";};
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
@ -98,10 +90,7 @@ in
 | 
			
		||||
        {
 | 
			
		||||
          position = "top";
 | 
			
		||||
          fonts = {
 | 
			
		||||
            names = [
 | 
			
		||||
              "DejaVu Sans Mono"
 | 
			
		||||
              "FontAwesome5Free"
 | 
			
		||||
            ];
 | 
			
		||||
            names = ["DejaVu Sans Mono" "FontAwesome5Free"];
 | 
			
		||||
            style = "Fixed Bold SemiCondensed";
 | 
			
		||||
            size = 7.0;
 | 
			
		||||
          };
 | 
			
		||||
@ -1,15 +1,4 @@
 | 
			
		||||
{ pkgs, ... }:
 | 
			
		||||
let
 | 
			
		||||
  kbd_switch = pkgs.writeShellScriptBin "kbd_switch" ''
 | 
			
		||||
    declare -A -r KBD_CYCLE_MAP=(
 | 
			
		||||
      ["English (US)"]="de"
 | 
			
		||||
      ["German"]="ba"
 | 
			
		||||
    )
 | 
			
		||||
    LAYOUT="$(${pkgs.sway}/bin/swaymsg -t get_inputs -r | ${pkgs.jq}/bin/jq -r 'map(select(.type == "keyboard")).[0].xkb_layout_names.[]')"
 | 
			
		||||
    swaymsg input "*" xkb_layout ''${KBD_CYCLE_MAP["$LAYOUT"]:-"us"}
 | 
			
		||||
  '';
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
{...}: {
 | 
			
		||||
  programs.i3status-rust = {
 | 
			
		||||
    bars.top = {
 | 
			
		||||
      icons = "awesome5";
 | 
			
		||||
@ -22,16 +11,6 @@ in
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      blocks = [
 | 
			
		||||
        {
 | 
			
		||||
          block = "keyboard_layout";
 | 
			
		||||
          driver = "sway";
 | 
			
		||||
          click = [
 | 
			
		||||
            {
 | 
			
		||||
              cmd = "${kbd_switch}/bin/kbd_switch";
 | 
			
		||||
              button = "left";
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          block = "battery";
 | 
			
		||||
          interval = 10;
 | 
			
		||||
@ -56,30 +35,20 @@ in
 | 
			
		||||
        {
 | 
			
		||||
          block = "net";
 | 
			
		||||
          device = "wlan0";
 | 
			
		||||
          if_command = "ip link show wlan0";
 | 
			
		||||
          interval = 2;
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          block = "net";
 | 
			
		||||
          device = "enp5s0";
 | 
			
		||||
          if_command = "ip link show enp5s0";
 | 
			
		||||
          interval = 2;
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          block = "net";
 | 
			
		||||
          device = "enp7s0f3u1u1";
 | 
			
		||||
          if_command = "ip link show enp7s0f3u1u1";
 | 
			
		||||
          interval = 2;
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          block = "net";
 | 
			
		||||
          device = "enp7s0f4u1u1";
 | 
			
		||||
          if_command = "ip link show enp7s0f4u1u1";
 | 
			
		||||
          interval = 2;
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          block = "net";
 | 
			
		||||
          if_command = "ip link show eno1";
 | 
			
		||||
          device = "eno1";
 | 
			
		||||
          interval = 2;
 | 
			
		||||
        }
 | 
			
		||||
@ -1,348 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  qutebrowser_firejail = pkgs.writeShellScriptBin "qutebrowser" ''
 | 
			
		||||
    firejail -- ${lib.getExe pkgs.qutebrowser} "$@"
 | 
			
		||||
  '';
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../common/zsh.nix
 | 
			
		||||
    ./home_packages.nix
 | 
			
		||||
    ../common/whatsapp-for-linux.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  home.stateVersion = "22.11";
 | 
			
		||||
  home.username = "akill";
 | 
			
		||||
  home.homeDirectory = "/home/akill";
 | 
			
		||||
 | 
			
		||||
  xdg.enable = true;
 | 
			
		||||
  xdg.mimeApps = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    defaultApplications = {
 | 
			
		||||
      "application/pdf" = "sioyek.desktop";
 | 
			
		||||
      "default-web-browser" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "text/html" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fonts.fontconfig.enable = true;
 | 
			
		||||
 | 
			
		||||
  home.sessionVariables = rec {
 | 
			
		||||
    BROWSER = lib.getExe qutebrowser_firejail;
 | 
			
		||||
    DEFAULT_BROWSER = "${BROWSER}";
 | 
			
		||||
    EDITOR = "nvim";
 | 
			
		||||
    _JAVA_AWT_WM_NONREPARENTING = "1";
 | 
			
		||||
    MOZ_ENABLE_WAYLAND = "1";
 | 
			
		||||
    NIXOS_OZONE_WL = "1";
 | 
			
		||||
    QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
 | 
			
		||||
    SUDO_EDITOR = "nvim";
 | 
			
		||||
    WLR_RENDERER = "vulkan";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  wayland.windowManager.sway = {
 | 
			
		||||
    enable = false;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  programs = {
 | 
			
		||||
    home-manager.enable = true;
 | 
			
		||||
 | 
			
		||||
    librewolf = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      package = pkgs.librewolf-wayland;
 | 
			
		||||
      settings = {
 | 
			
		||||
        "webgl.disable" = true;
 | 
			
		||||
        "middlemouse.paste" = false;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    tmux = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      clock24 = true;
 | 
			
		||||
      keyMode = "vi";
 | 
			
		||||
      terminal = "screen-256color";
 | 
			
		||||
      plugins = with pkgs.tmuxPlugins; [
 | 
			
		||||
        sysstat
 | 
			
		||||
        net-speed
 | 
			
		||||
        gruvbox
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    mpv = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      config = {
 | 
			
		||||
        slang = "eng,en";
 | 
			
		||||
        alang = "eng,en";
 | 
			
		||||
        hwdec = "auto";
 | 
			
		||||
        vo = "gpu-next";
 | 
			
		||||
        ao = "pipewire";
 | 
			
		||||
        osd-bar = "no";
 | 
			
		||||
        border = "no";
 | 
			
		||||
        script-opts-set = "";
 | 
			
		||||
        ytdl-format = "bestvideo[height<=?1080]+bestaudio/best";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      bindings = {
 | 
			
		||||
        WHEEL_UP = "ignore";
 | 
			
		||||
        WHEEL_DOWN = "ignore";
 | 
			
		||||
        WHEEL_LEFT = "ignore";
 | 
			
		||||
        WHEEL_RIGHT = "ignore";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    alacritty = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
 | 
			
		||||
      settings = {
 | 
			
		||||
        font = {
 | 
			
		||||
          normal.family = "JetBrainsMono";
 | 
			
		||||
          italic.family = "JetBrainsMono";
 | 
			
		||||
          bold.family = "JetBrainsMono";
 | 
			
		||||
          bold_italic.family = "JetBrainsMono";
 | 
			
		||||
          size = 14.0;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        selection = {
 | 
			
		||||
          text = "0xcfcfc2";
 | 
			
		||||
          background = "0x232629";
 | 
			
		||||
 | 
			
		||||
          normal = {
 | 
			
		||||
            black = "0x1c1b19";
 | 
			
		||||
            red = "0xef2f27";
 | 
			
		||||
            green = "0x519f50";
 | 
			
		||||
            yellow = "0xfbb829";
 | 
			
		||||
            blue = "0x2c78bf";
 | 
			
		||||
            magenta = "0xe02c6d";
 | 
			
		||||
            cyan = "0x0aaeb3";
 | 
			
		||||
            white = "0x918175";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          bright = {
 | 
			
		||||
            black = "0x2D2C29";
 | 
			
		||||
            red = "0xf75341";
 | 
			
		||||
            green = "0x98bc37";
 | 
			
		||||
            yellow = "0xfed06e";
 | 
			
		||||
            blue = "0x68A8E4";
 | 
			
		||||
            magenta = "0xff5c8f";
 | 
			
		||||
            cyan = "0x53fde9";
 | 
			
		||||
            white = "0xfce8c3";
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    rofi = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      theme = "gruvbox-dark";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    foot = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      server.enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        main = {
 | 
			
		||||
          font = "JetBrainsMono:size=10";
 | 
			
		||||
          dpi-aware = "yes";
 | 
			
		||||
        };
 | 
			
		||||
        mouse = {
 | 
			
		||||
          hide-when-typing = "yes";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    qutebrowser = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      keyBindings = {
 | 
			
		||||
        normal = {
 | 
			
		||||
          "j" = "scroll-px 0 25";
 | 
			
		||||
          "k" = "scroll-px 0 -25";
 | 
			
		||||
          "u" = "undo --window";
 | 
			
		||||
          ";v" = "hint links spawn mpv {hint-url}";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      settings = {
 | 
			
		||||
        content.notifications.enabled = false;
 | 
			
		||||
        content.pdfjs = true;
 | 
			
		||||
        content.webgl = false;
 | 
			
		||||
        fonts.completion.category = "14pt monospace";
 | 
			
		||||
        fonts.completion.entry = "14pt monospace";
 | 
			
		||||
        fonts.contextmenu = "14pt monospace";
 | 
			
		||||
        fonts.debug_console = "14pt monospace";
 | 
			
		||||
        fonts.downloads = "14pt monospace";
 | 
			
		||||
        fonts.hints = "14pt monospace";
 | 
			
		||||
        fonts.keyhint = "14pt monospace";
 | 
			
		||||
        fonts.messages.info = "14pt monospace";
 | 
			
		||||
        fonts.prompts = "14pt monospace";
 | 
			
		||||
        fonts.statusbar = "14pt monospace";
 | 
			
		||||
        hints.chars = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol0p";
 | 
			
		||||
        tabs.last_close = "close";
 | 
			
		||||
        tabs.position = "left";
 | 
			
		||||
        tabs.show = "multiple";
 | 
			
		||||
        tabs.tabs_are_windows = true;
 | 
			
		||||
        tabs.width = "12%";
 | 
			
		||||
        zoom.default = "125%";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    git = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      userName = "Asmir A";
 | 
			
		||||
      userEmail = "asmir.abdulahovic@gmail.com";
 | 
			
		||||
      extraConfig = {
 | 
			
		||||
        init.defaultBranch = "master";
 | 
			
		||||
        pull = {
 | 
			
		||||
          rebase = true;
 | 
			
		||||
        };
 | 
			
		||||
        credential = {
 | 
			
		||||
          helper = "store";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
      signing.key = "020C42B7A9ABA3E2";
 | 
			
		||||
      signing.signByDefault = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    obs-studio = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      plugins = with pkgs.obs-studio-plugins; [
 | 
			
		||||
        obs-vkcapture
 | 
			
		||||
        input-overlay
 | 
			
		||||
        obs-multi-rtmp
 | 
			
		||||
        obs-pipewire-audio-capture
 | 
			
		||||
        wlrobs
 | 
			
		||||
        obs-vaapi
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    i3status-rust.enable = false;
 | 
			
		||||
    z-lua.enable = true;
 | 
			
		||||
    zsh.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services = {
 | 
			
		||||
    lorri.enable = false;
 | 
			
		||||
    mako.enable = true;
 | 
			
		||||
    cliphist.enable = true;
 | 
			
		||||
    gammastep = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      latitude = "44.53";
 | 
			
		||||
      longitude = "18.67";
 | 
			
		||||
      temperature.day = 5500;
 | 
			
		||||
      temperature.night = 2900;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    gnome-keyring.enable = true;
 | 
			
		||||
 | 
			
		||||
    gpg-agent = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      defaultCacheTtl = 1800;
 | 
			
		||||
      enableSshSupport = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    swayidle =
 | 
			
		||||
      let
 | 
			
		||||
        locker = pkgs.writeShellScriptBin "swaylock_fancy" ''
 | 
			
		||||
          ALL_IMGS=""
 | 
			
		||||
          LOCK_ARGS=""
 | 
			
		||||
          for OUTPUT in $(${pkgs.sway}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[].name')
 | 
			
		||||
          do
 | 
			
		||||
            TMP_FILE=$(${pkgs.coreutils}/bin/mktemp /tmp/.swaylock_ss_XXXXXX.jpg)
 | 
			
		||||
            ${lib.getExe pkgs.grim} -t ppm -o $OUTPUT - | \
 | 
			
		||||
              ${lib.getExe pkgs.ffmpeg} -y -loglevel 0 -i - -vframes 1 -vf "boxblur=10" "$TMP_FILE"
 | 
			
		||||
            LOCK_ARGS="$LOCK_ARGS --image $OUTPUT:$TMP_FILE"
 | 
			
		||||
            ALL_IMGS="$ALL_IMGS $TMP_FILE"
 | 
			
		||||
          done
 | 
			
		||||
            ${lib.getExe pkgs.swaylock} -f $LOCK_ARGS
 | 
			
		||||
            ${pkgs.coreutils}/bin/shred $ALL_IMGS
 | 
			
		||||
            ${pkgs.coreutils}/bin/rm $ALL_IMGS
 | 
			
		||||
        '';
 | 
			
		||||
      in
 | 
			
		||||
      /*
 | 
			
		||||
        refresh_i3status = pkgs.writeShellScriptBin "refresh_i3status" ''
 | 
			
		||||
          ${pkgs.coreutils}/bin/sleep 1 && ${pkgs.procps}/bin/pkill -USR1 i3status-rs
 | 
			
		||||
        '';
 | 
			
		||||
      */
 | 
			
		||||
      {
 | 
			
		||||
        enable = false;
 | 
			
		||||
        events = [
 | 
			
		||||
          {
 | 
			
		||||
            event = "before-sleep";
 | 
			
		||||
            command = "${locker}/bin/swaylock_fancy";
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            event = "lock";
 | 
			
		||||
            command = "${locker}/bin/swaylock_fancy";
 | 
			
		||||
          }
 | 
			
		||||
          /*
 | 
			
		||||
            {
 | 
			
		||||
              event = "after-resume";
 | 
			
		||||
              command = "${refresh_i3status}/bin/refresh_i3status";
 | 
			
		||||
            }
 | 
			
		||||
          */
 | 
			
		||||
        ];
 | 
			
		||||
        timeouts = [
 | 
			
		||||
          {
 | 
			
		||||
            timeout = 15 * 60;
 | 
			
		||||
            command = "${locker}/bin/swaylock_fancy";
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    kanshi = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
      settings = [
 | 
			
		||||
        {
 | 
			
		||||
          profile.name = "undocked";
 | 
			
		||||
          profile.outputs = [
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "eDP-1";
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          profile.name = "docked";
 | 
			
		||||
          profile.outputs = [
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "eDP-1";
 | 
			
		||||
              position = "0,0";
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026536";
 | 
			
		||||
              mode = "1920x1080@74.973Hz";
 | 
			
		||||
              position = "1920,0";
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026535";
 | 
			
		||||
              mode = "1920x1080@74.973Hz";
 | 
			
		||||
              position = "3840,0";
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  systemd.user = {
 | 
			
		||||
    services = {
 | 
			
		||||
      wayland-pipewire-idle-inhibit = {
 | 
			
		||||
        Unit.Description = "inhibit sleep while audio output is active";
 | 
			
		||||
        Service = {
 | 
			
		||||
          ExecStart = "${lib.getExe pkgs.wayland-pipewire-idle-inhibit}";
 | 
			
		||||
          Restart = "always";
 | 
			
		||||
          RestartSec = 10;
 | 
			
		||||
        };
 | 
			
		||||
        Install = {
 | 
			
		||||
          WantedBy = [ "graphical-session.target" ];
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,58 +0,0 @@
 | 
			
		||||
{ lib
 | 
			
		||||
, pkgs
 | 
			
		||||
, ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  chromium_discord = pkgs.writeShellScriptBin "chromium_discord" ''
 | 
			
		||||
    ${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://discordapp.com/channels/@me
 | 
			
		||||
  '';
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  home.packages =
 | 
			
		||||
    with pkgs;
 | 
			
		||||
    [
 | 
			
		||||
      cached-nix-shell
 | 
			
		||||
      deluge
 | 
			
		||||
      dualsensectl
 | 
			
		||||
      ffmpeg-full
 | 
			
		||||
      firefox
 | 
			
		||||
      freetube
 | 
			
		||||
      imv
 | 
			
		||||
      inkscape
 | 
			
		||||
      jellyfin-media-player
 | 
			
		||||
      kodi-wayland
 | 
			
		||||
      libnotify
 | 
			
		||||
      libreoffice-qt6-fresh
 | 
			
		||||
      libva-utils
 | 
			
		||||
      nixpkgs-fmt
 | 
			
		||||
      nix-prefetch-git
 | 
			
		||||
      pandoc
 | 
			
		||||
      paraview
 | 
			
		||||
      pass-wayland
 | 
			
		||||
      pavucontrol
 | 
			
		||||
      pay-respects
 | 
			
		||||
      pirate-get
 | 
			
		||||
      poppler_utils
 | 
			
		||||
      pulsemixer
 | 
			
		||||
      pwvucontrol
 | 
			
		||||
      python3
 | 
			
		||||
      remmina
 | 
			
		||||
      rtorrent
 | 
			
		||||
      sioyek
 | 
			
		||||
      steam-run
 | 
			
		||||
      stremio
 | 
			
		||||
      swayimg
 | 
			
		||||
      tessen
 | 
			
		||||
      ungoogled-chromium
 | 
			
		||||
      wdisplays
 | 
			
		||||
      wine
 | 
			
		||||
      wl-clipboard
 | 
			
		||||
      wlr-randr
 | 
			
		||||
      wofi
 | 
			
		||||
      yt-dlp
 | 
			
		||||
      zathura
 | 
			
		||||
    ]
 | 
			
		||||
    ++ [
 | 
			
		||||
      chromium_discord
 | 
			
		||||
    ];
 | 
			
		||||
}
 | 
			
		||||
@ -1,362 +0,0 @@
 | 
			
		||||
{ lib
 | 
			
		||||
, pkgs
 | 
			
		||||
, ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  qutebrowser_firejail = pkgs.writeShellScriptBin "qutebrowser" ''
 | 
			
		||||
    firejail -- ${lib.getExe pkgs.qutebrowser} "$@"
 | 
			
		||||
  '';
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../common/zsh.nix
 | 
			
		||||
    ../common/i3status-rust.nix
 | 
			
		||||
    ../common/sway.nix
 | 
			
		||||
    ../common/i3.nix
 | 
			
		||||
    ./home_packages.nix
 | 
			
		||||
    ../common/whatsapp-for-linux.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  home.stateVersion = "22.11";
 | 
			
		||||
  home.username = "akill";
 | 
			
		||||
  home.homeDirectory = "/home/akill";
 | 
			
		||||
 | 
			
		||||
  xdg.enable = true;
 | 
			
		||||
  xdg.mimeApps = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    defaultApplications = {
 | 
			
		||||
      "application/pdf" = "sioyek.desktop";
 | 
			
		||||
      "default-web-browser" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "text/html" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
      "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fonts.fontconfig.enable = true;
 | 
			
		||||
 | 
			
		||||
  home.sessionVariables = rec {
 | 
			
		||||
    BROWSER = lib.getExe qutebrowser_firejail;
 | 
			
		||||
    DEFAULT_BROWSER = "${BROWSER}";
 | 
			
		||||
    EDITOR = "nvim";
 | 
			
		||||
    _JAVA_AWT_WM_NONREPARENTING = "1";
 | 
			
		||||
    MOZ_ENABLE_WAYLAND = "1";
 | 
			
		||||
    NIXOS_OZONE_WL = "1";
 | 
			
		||||
    QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
 | 
			
		||||
    SUDO_EDITOR = "nvim";
 | 
			
		||||
    WLR_RENDERER = "vulkan";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  home.pointerCursor = {
 | 
			
		||||
    package = pkgs.adwaita-icon-theme;
 | 
			
		||||
    name = "Adwaita";
 | 
			
		||||
    size = 38;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  wayland.windowManager.sway = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  programs = {
 | 
			
		||||
    home-manager.enable = true;
 | 
			
		||||
 | 
			
		||||
    librewolf = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      package = pkgs.librewolf-wayland;
 | 
			
		||||
      settings = {
 | 
			
		||||
        "webgl.disable" = true;
 | 
			
		||||
        "middlemouse.paste" = false;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    tmux = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      clock24 = true;
 | 
			
		||||
      keyMode = "vi";
 | 
			
		||||
      terminal = "screen-256color";
 | 
			
		||||
      plugins = with pkgs.tmuxPlugins; [
 | 
			
		||||
        sysstat
 | 
			
		||||
        net-speed
 | 
			
		||||
        gruvbox
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    mpv = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      scripts = [
 | 
			
		||||
        pkgs.mpvScripts.uosc
 | 
			
		||||
        pkgs.mpvScripts.autosubsync-mpv
 | 
			
		||||
      ];
 | 
			
		||||
      config = {
 | 
			
		||||
        osc = "no";
 | 
			
		||||
        osd-bar = "no";
 | 
			
		||||
        border = "no";
 | 
			
		||||
        slang = "eng,en";
 | 
			
		||||
        alang = "eng,en";
 | 
			
		||||
        hwdec = "auto";
 | 
			
		||||
        vo = "gpu-next";
 | 
			
		||||
        ao = "pipewire";
 | 
			
		||||
        ytdl-format = "bestvideo[height<=?1080]+bestaudio/best";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      bindings = {
 | 
			
		||||
        "s" = "script-binding uosc/subtitles";
 | 
			
		||||
        "a" = "script-binding uosc/audio";
 | 
			
		||||
        WHEEL_UP = "ignore";
 | 
			
		||||
        WHEEL_DOWN = "ignore";
 | 
			
		||||
        WHEEL_LEFT = "ignore";
 | 
			
		||||
        WHEEL_RIGHT = "ignore";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    alacritty = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
 | 
			
		||||
      settings = {
 | 
			
		||||
        font = {
 | 
			
		||||
          normal.family = "JetBrainsMono";
 | 
			
		||||
          italic.family = "JetBrainsMono";
 | 
			
		||||
          bold.family = "JetBrainsMono";
 | 
			
		||||
          bold_italic.family = "JetBrainsMono";
 | 
			
		||||
          size = 14.0;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        selection = {
 | 
			
		||||
          text = "0xcfcfc2";
 | 
			
		||||
          background = "0x232629";
 | 
			
		||||
 | 
			
		||||
          normal = {
 | 
			
		||||
            black = "0x1c1b19";
 | 
			
		||||
            red = "0xef2f27";
 | 
			
		||||
            green = "0x519f50";
 | 
			
		||||
            yellow = "0xfbb829";
 | 
			
		||||
            blue = "0x2c78bf";
 | 
			
		||||
            magenta = "0xe02c6d";
 | 
			
		||||
            cyan = "0x0aaeb3";
 | 
			
		||||
            white = "0x918175";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          bright = {
 | 
			
		||||
            black = "0x2D2C29";
 | 
			
		||||
            red = "0xf75341";
 | 
			
		||||
            green = "0x98bc37";
 | 
			
		||||
            yellow = "0xfed06e";
 | 
			
		||||
            blue = "0x68A8E4";
 | 
			
		||||
            magenta = "0xff5c8f";
 | 
			
		||||
            cyan = "0x53fde9";
 | 
			
		||||
            white = "0xfce8c3";
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    rofi = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      theme = "gruvbox-dark";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    foot = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      server.enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        main = {
 | 
			
		||||
          font = "JetBrainsMono:size=10";
 | 
			
		||||
          dpi-aware = "yes";
 | 
			
		||||
        };
 | 
			
		||||
        mouse = {
 | 
			
		||||
          hide-when-typing = "yes";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    qutebrowser = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      keyBindings = {
 | 
			
		||||
        normal = {
 | 
			
		||||
          "j" = "scroll-px 0 25";
 | 
			
		||||
          "k" = "scroll-px 0 -25";
 | 
			
		||||
          "u" = "undo --window";
 | 
			
		||||
          ";v" = "hint links spawn mpv {hint-url}";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      settings = {
 | 
			
		||||
        content.notifications.enabled = false;
 | 
			
		||||
        content.pdfjs = true;
 | 
			
		||||
        content.webgl = false;
 | 
			
		||||
        fonts.completion.category = "14pt monospace";
 | 
			
		||||
        fonts.completion.entry = "14pt monospace";
 | 
			
		||||
        fonts.contextmenu = "14pt monospace";
 | 
			
		||||
        fonts.debug_console = "14pt monospace";
 | 
			
		||||
        fonts.downloads = "14pt monospace";
 | 
			
		||||
        fonts.hints = "14pt monospace";
 | 
			
		||||
        fonts.keyhint = "14pt monospace";
 | 
			
		||||
        fonts.messages.info = "14pt monospace";
 | 
			
		||||
        fonts.prompts = "14pt monospace";
 | 
			
		||||
        fonts.statusbar = "14pt monospace";
 | 
			
		||||
        hints.chars = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol0p";
 | 
			
		||||
        tabs.last_close = "close";
 | 
			
		||||
        tabs.position = "left";
 | 
			
		||||
        tabs.show = "multiple";
 | 
			
		||||
        tabs.tabs_are_windows = true;
 | 
			
		||||
        tabs.width = "12%";
 | 
			
		||||
        zoom.default = "125%";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    git = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      userName = "Asmir A";
 | 
			
		||||
      userEmail = "asmir.abdulahovic@gmail.com";
 | 
			
		||||
      extraConfig = {
 | 
			
		||||
        init.defaultBranch = "master";
 | 
			
		||||
        pull = {
 | 
			
		||||
          rebase = true;
 | 
			
		||||
        };
 | 
			
		||||
        credential = {
 | 
			
		||||
          helper = "store";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
      signing.key = "020C42B7A9ABA3E2";
 | 
			
		||||
      signing.signByDefault = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    obs-studio = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      plugins = with pkgs.obs-studio-plugins; [
 | 
			
		||||
        obs-vkcapture
 | 
			
		||||
        input-overlay
 | 
			
		||||
        obs-multi-rtmp
 | 
			
		||||
        obs-pipewire-audio-capture
 | 
			
		||||
        wlrobs
 | 
			
		||||
        obs-vaapi
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    i3status-rust.enable = true;
 | 
			
		||||
    z-lua.enable = true;
 | 
			
		||||
    zsh.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services = {
 | 
			
		||||
    lorri.enable = false;
 | 
			
		||||
    mako.enable = true;
 | 
			
		||||
    cliphist.enable = true;
 | 
			
		||||
    gammastep = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      latitude = "44.53";
 | 
			
		||||
      longitude = "18.67";
 | 
			
		||||
      temperature.day = 5500;
 | 
			
		||||
      temperature.night = 2900;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    gnome-keyring.enable = true;
 | 
			
		||||
 | 
			
		||||
    gpg-agent = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      defaultCacheTtl = 1800;
 | 
			
		||||
      enableSshSupport = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    swayidle =
 | 
			
		||||
      let
 | 
			
		||||
        locker = pkgs.writeShellScriptBin "swaylock_fancy" ''
 | 
			
		||||
          ALL_IMGS=""
 | 
			
		||||
          LOCK_ARGS=""
 | 
			
		||||
          for OUTPUT in $(${pkgs.sway}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[].name')
 | 
			
		||||
          do
 | 
			
		||||
            TMP_FILE=$(${pkgs.coreutils}/bin/mktemp /tmp/.swaylock_ss_XXXXXX.jpg)
 | 
			
		||||
            ${lib.getExe pkgs.grim} -t ppm -o $OUTPUT - | \
 | 
			
		||||
              ${lib.getExe pkgs.ffmpeg} -y -loglevel 0 -i - -vframes 1 -vf "boxblur=10" "$TMP_FILE"
 | 
			
		||||
            LOCK_ARGS="$LOCK_ARGS --image $OUTPUT:$TMP_FILE"
 | 
			
		||||
            ALL_IMGS="$ALL_IMGS $TMP_FILE"
 | 
			
		||||
          done
 | 
			
		||||
            ${lib.getExe pkgs.swaylock} -f $LOCK_ARGS
 | 
			
		||||
            ${pkgs.coreutils}/bin/shred $ALL_IMGS
 | 
			
		||||
            ${pkgs.coreutils}/bin/rm $ALL_IMGS
 | 
			
		||||
        '';
 | 
			
		||||
      in
 | 
			
		||||
        /*
 | 
			
		||||
        refresh_i3status = pkgs.writeShellScriptBin "refresh_i3status" ''
 | 
			
		||||
          ${pkgs.coreutils}/bin/sleep 1 && ${pkgs.procps}/bin/pkill -USR1 i3status-rs
 | 
			
		||||
        '';
 | 
			
		||||
        */
 | 
			
		||||
      {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        events = [
 | 
			
		||||
          {
 | 
			
		||||
            event = "before-sleep";
 | 
			
		||||
            command = "${locker}/bin/swaylock_fancy";
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            event = "lock";
 | 
			
		||||
            command = "${locker}/bin/swaylock_fancy";
 | 
			
		||||
          }
 | 
			
		||||
          /*
 | 
			
		||||
            {
 | 
			
		||||
              event = "after-resume";
 | 
			
		||||
              command = "${refresh_i3status}/bin/refresh_i3status";
 | 
			
		||||
            }
 | 
			
		||||
          */
 | 
			
		||||
        ];
 | 
			
		||||
        timeouts = [
 | 
			
		||||
          {
 | 
			
		||||
            timeout = 15 * 60;
 | 
			
		||||
            command = "${locker}/bin/swaylock_fancy";
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    kanshi = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = [
 | 
			
		||||
        {
 | 
			
		||||
          profile.name = "undocked";
 | 
			
		||||
          profile.outputs = [
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "eDP-1";
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          profile.name = "docked";
 | 
			
		||||
          profile.outputs = [
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "eDP-1";
 | 
			
		||||
              position = "0,0";
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026536";
 | 
			
		||||
              mode = "1920x1080@74.973Hz";
 | 
			
		||||
              position = "1920,0";
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026535";
 | 
			
		||||
              mode = "1920x1080@74.973Hz";
 | 
			
		||||
              position = "3840,0";
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  systemd.user = {
 | 
			
		||||
    services = {
 | 
			
		||||
      wayland-pipewire-idle-inhibit = {
 | 
			
		||||
        Unit.Description = "inhibit sleep while audio output is active";
 | 
			
		||||
        Service = {
 | 
			
		||||
          ExecStart = "${lib.getExe pkgs.wayland-pipewire-idle-inhibit}";
 | 
			
		||||
          Restart = "always";
 | 
			
		||||
          RestartSec = 10;
 | 
			
		||||
        };
 | 
			
		||||
        Install = {
 | 
			
		||||
          WantedBy = [ "graphical-session.target" ];
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,183 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
  system,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  chromium_teams = pkgs.writeShellScriptBin "chromium_teams" ''
 | 
			
		||||
    ${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://teams.microsoft.com/
 | 
			
		||||
  '';
 | 
			
		||||
  chromium_discord = pkgs.writeShellScriptBin "chromium_discord" ''
 | 
			
		||||
    ${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://discordapp.com/channels/@me
 | 
			
		||||
  '';
 | 
			
		||||
  chromium_stackfield = pkgs.writeShellScriptBin "chromium_stackfield" ''
 | 
			
		||||
    ${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://stackfield.com/
 | 
			
		||||
  '';
 | 
			
		||||
  nixy_switch = pkgs.writeShellScriptBin "nixy_switch" ''
 | 
			
		||||
    ${pkgs.util-linux}/bin/ionice -c 3 -- \
 | 
			
		||||
    ${pkgs.coreutils}/bin/nice -n 20 -- \
 | 
			
		||||
    ${lib.getExe pkgs.nixos-rebuild} --flake ./#nixy switch
 | 
			
		||||
  '';
 | 
			
		||||
  qcad = pkgs.writeShellScriptBin "qcad" ''
 | 
			
		||||
    QT_QPA_PLATFORM=xcb ${lib.getExe pkgs.qcad} $@
 | 
			
		||||
  '';
 | 
			
		||||
  ssh_proxy = pkgs.writeShellScriptBin "ssh_proxy" ''
 | 
			
		||||
    if ${pkgs.coreutils}/bin/test $# -ne 1; then
 | 
			
		||||
      echo "Usage: $0 <user>@<ssh_host>"
 | 
			
		||||
      exit
 | 
			
		||||
    fi
 | 
			
		||||
    PROXY_PORT="1337"
 | 
			
		||||
    ${lib.getExe pkgs.openssh} -D "$PROXY_PORT" -q -N "$@"
 | 
			
		||||
  '';
 | 
			
		||||
  wrap_sh =
 | 
			
		||||
    let
 | 
			
		||||
      bubblewrap = pkgs.callPackage ../../packages/bubblewrap/default.nix { };
 | 
			
		||||
    in
 | 
			
		||||
    pkgs.writeShellScriptBin "wrap.sh" ''
 | 
			
		||||
      if ${pkgs.coreutils-full}/bin/test $# -ne 1; then
 | 
			
		||||
        echo "Usage: $0 <directory>"
 | 
			
		||||
        exit
 | 
			
		||||
      fi
 | 
			
		||||
      FULL_PATH=$(${pkgs.coreutils-full}/bin/realpath "$1")
 | 
			
		||||
      BUBBLEWRAP_DIR="$1" ${bubblewrap}/bin/bwrap \
 | 
			
		||||
        --bind / / \
 | 
			
		||||
        --dev /dev \
 | 
			
		||||
        --overlay-src "$FULL_PATH" \
 | 
			
		||||
        --tmp-overlay "$FULL_PATH" \
 | 
			
		||||
        "$SHELL"
 | 
			
		||||
    '';
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  home.packages =
 | 
			
		||||
    with pkgs;
 | 
			
		||||
    [
 | 
			
		||||
      anydesk
 | 
			
		||||
      appimage-run
 | 
			
		||||
      arp-scan
 | 
			
		||||
      birdtray
 | 
			
		||||
      blackmagic
 | 
			
		||||
      blender
 | 
			
		||||
      btop
 | 
			
		||||
      cached-nix-shell
 | 
			
		||||
      caddy
 | 
			
		||||
      cargo
 | 
			
		||||
      cmake
 | 
			
		||||
      compsize
 | 
			
		||||
      kdePackages.ark
 | 
			
		||||
      ungoogled-chromium
 | 
			
		||||
      # cura
 | 
			
		||||
      deluge
 | 
			
		||||
      dfu-util
 | 
			
		||||
      discord
 | 
			
		||||
      dmenu-wayland
 | 
			
		||||
      drawio
 | 
			
		||||
      dualsensectl
 | 
			
		||||
      ffmpeg-full
 | 
			
		||||
      firefox
 | 
			
		||||
      freecad
 | 
			
		||||
      gcc
 | 
			
		||||
      gdb
 | 
			
		||||
      ghostscript
 | 
			
		||||
      glab
 | 
			
		||||
      glaxnimate
 | 
			
		||||
      gnumake
 | 
			
		||||
      go
 | 
			
		||||
      grim
 | 
			
		||||
      heimdall
 | 
			
		||||
      hyperfine
 | 
			
		||||
      icestorm
 | 
			
		||||
      imagemagick
 | 
			
		||||
      imv
 | 
			
		||||
      inkscape
 | 
			
		||||
      jellyfin-media-player
 | 
			
		||||
      kdePackages.kdenlive
 | 
			
		||||
      kicad
 | 
			
		||||
      kodi-wayland
 | 
			
		||||
      krita
 | 
			
		||||
      libnotify
 | 
			
		||||
      libreoffice-qt6-fresh
 | 
			
		||||
      libva-utils
 | 
			
		||||
      linuxPackages_latest.perf
 | 
			
		||||
      lsix
 | 
			
		||||
      lsix
 | 
			
		||||
      mediainfo
 | 
			
		||||
      ncdu
 | 
			
		||||
      neovide
 | 
			
		||||
      nextpnr
 | 
			
		||||
      ngspice
 | 
			
		||||
      nix-init
 | 
			
		||||
      nixpkgs-fmt
 | 
			
		||||
      nix-prefetch-git
 | 
			
		||||
      nom
 | 
			
		||||
      openems
 | 
			
		||||
      openocd
 | 
			
		||||
      openscad
 | 
			
		||||
      pandoc
 | 
			
		||||
      paraview
 | 
			
		||||
      pass-wayland
 | 
			
		||||
      patchelf
 | 
			
		||||
      pavucontrol
 | 
			
		||||
      pay-respects
 | 
			
		||||
      pirate-get
 | 
			
		||||
      poppler_utils
 | 
			
		||||
      powertop
 | 
			
		||||
      pulsemixer
 | 
			
		||||
      pwvucontrol
 | 
			
		||||
      python3
 | 
			
		||||
      python3Packages.west
 | 
			
		||||
      qucs-s
 | 
			
		||||
      radeontop
 | 
			
		||||
      remmina
 | 
			
		||||
      river
 | 
			
		||||
      rizin
 | 
			
		||||
      rtorrent
 | 
			
		||||
      sbcl
 | 
			
		||||
      screen
 | 
			
		||||
      seer
 | 
			
		||||
      sioyek
 | 
			
		||||
      slurp
 | 
			
		||||
      steam-run
 | 
			
		||||
      stm32cubemx
 | 
			
		||||
      swayimg
 | 
			
		||||
      tea
 | 
			
		||||
      teams-for-linux
 | 
			
		||||
      tectonic
 | 
			
		||||
      tessen
 | 
			
		||||
      texlive.combined.scheme-full
 | 
			
		||||
      thunderbird
 | 
			
		||||
      typst
 | 
			
		||||
      upx
 | 
			
		||||
      viber
 | 
			
		||||
      waybar
 | 
			
		||||
      wdisplays
 | 
			
		||||
      weechat
 | 
			
		||||
      whatsapp-for-linux
 | 
			
		||||
      wine
 | 
			
		||||
      wireshark
 | 
			
		||||
      wl-clipboard
 | 
			
		||||
      wlr-randr
 | 
			
		||||
      wofi
 | 
			
		||||
      x2goclient
 | 
			
		||||
      yewtube
 | 
			
		||||
      yosys
 | 
			
		||||
      yt-dlp
 | 
			
		||||
      zapzap
 | 
			
		||||
      zathura
 | 
			
		||||
      zig
 | 
			
		||||
    ]
 | 
			
		||||
    ++ [
 | 
			
		||||
      chromium_discord
 | 
			
		||||
      chromium_stackfield
 | 
			
		||||
      chromium_teams
 | 
			
		||||
      nixy_switch
 | 
			
		||||
      qcad
 | 
			
		||||
      ssh_proxy
 | 
			
		||||
      wrap_sh
 | 
			
		||||
    ]
 | 
			
		||||
    ++ [
 | 
			
		||||
      inputs.swaysw.packages.${system}.swaysw
 | 
			
		||||
      (pkgs.callPackage ../../packages/bubblewrap/default.nix { })
 | 
			
		||||
    ];
 | 
			
		||||
}
 | 
			
		||||
@ -1,11 +1,11 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
  system,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
}: let
 | 
			
		||||
  cliphist_sway = pkgs.writeShellScriptBin "cliphist_sway" ''
 | 
			
		||||
    ${lib.getExe pkgs.cliphist} list | \
 | 
			
		||||
    ${lib.getExe pkgs.wofi} --dmenu --insensitive | \
 | 
			
		||||
@ -17,9 +17,9 @@ let
 | 
			
		||||
    ${lib.getExe pkgs.grim} -g "$GEOM" - | ${pkgs.wl-clipboard}/bin/wl-copy
 | 
			
		||||
  '';
 | 
			
		||||
  swaysw = inputs.swaysw.packages.${system}.swaysw;
 | 
			
		||||
  viber = pkgs.callPackage ../packages/viber/default.nix {};
 | 
			
		||||
  term = "${pkgs.foot}/bin/footclient";
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
in {
 | 
			
		||||
  wayland.windowManager.sway = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    extraSessionCommands = "";
 | 
			
		||||
@ -35,21 +35,15 @@ in
 | 
			
		||||
      window.commands = [
 | 
			
		||||
        {
 | 
			
		||||
          command = "move scratchpad, resize set 1152 648";
 | 
			
		||||
          criteria = {
 | 
			
		||||
            app_id = "pulsemixer|python3|com.rtosta.zapzap|whatsapp-for-linux|com.viber";
 | 
			
		||||
          };
 | 
			
		||||
          criteria = {app_id = "pulsemixer|python3|com.rtosta.zapzap|whatsapp-for-linux|com.viber";};
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          command = "move scratchpad, resize set 1502 845";
 | 
			
		||||
          criteria = {
 | 
			
		||||
            app_id = "com.viber";
 | 
			
		||||
          };
 | 
			
		||||
          criteria = {app_id = "com.viber";};
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          command = "floating enable";
 | 
			
		||||
          criteria = {
 | 
			
		||||
            app_id = "sws_cli";
 | 
			
		||||
          };
 | 
			
		||||
          criteria = {app_id = "sws_cli";};
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
@ -68,25 +62,16 @@ in
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      input = {
 | 
			
		||||
        "type:keyboard" = {
 | 
			
		||||
          repeat_delay = "150";
 | 
			
		||||
        };
 | 
			
		||||
        "type:keyboard" = {
 | 
			
		||||
          repeat_rate = "70";
 | 
			
		||||
        };
 | 
			
		||||
        "type:touchpad" = {
 | 
			
		||||
          tap = "enabled";
 | 
			
		||||
        };
 | 
			
		||||
        "type:keyboard" = {repeat_delay = "150";};
 | 
			
		||||
        "type:keyboard" = {repeat_rate = "70";};
 | 
			
		||||
        "type:touchpad" = {tap = "enabled";};
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      bars = [
 | 
			
		||||
        {
 | 
			
		||||
          position = "top";
 | 
			
		||||
          fonts = {
 | 
			
		||||
            names = [
 | 
			
		||||
              "Iosevka"
 | 
			
		||||
              "FontAwesome"
 | 
			
		||||
            ];
 | 
			
		||||
            names = ["Iosevka" "FontAwesome"];
 | 
			
		||||
            style = "Bold Semi-Condensed";
 | 
			
		||||
            size = 12.0;
 | 
			
		||||
          };
 | 
			
		||||
@ -140,14 +125,12 @@ in
 | 
			
		||||
        "Alt+bracketright" = "focus output right";
 | 
			
		||||
        "Alt+bracketleft" = "focus output left";
 | 
			
		||||
 | 
			
		||||
        "Mod4+l" =
 | 
			
		||||
          ''exec ${pkgs.sway}/bin/swaymsg [app_id="python3"] scratchpad show || exec ${term} -a python3 ${lib.getExe pkgs.python3}'';
 | 
			
		||||
        "Mod4+j" =
 | 
			
		||||
          "exec ${pkgs.sway}/bin/swaymsg [app_id=com.rtosta.zapzap] scratchpad show || exec ${lib.getExe pkgs.zapzap}";
 | 
			
		||||
        "Mod4+h" =
 | 
			
		||||
          "exec ${pkgs.sway}/bin/swaymsg [app_id=com.viber] scratchpad show || exec ${pkgs.viber}/bin/viber";
 | 
			
		||||
        "Mod4+y" =
 | 
			
		||||
          ''exec ${pkgs.sway}/bin/swaymsg [app_id="pulsemixer"] scratchpad show || exec ${term} -a pulsemixer ${lib.getExe pkgs.pulsemixer}'';
 | 
			
		||||
        "Mod4+l" = ''
 | 
			
		||||
          exec ${pkgs.sway}/bin/swaymsg [app_id="python3"] scratchpad show || exec ${term} -a python3 ${lib.getExe pkgs.python3}'';
 | 
			
		||||
        "Mod4+h" = "exec ${pkgs.sway}/bin/swaymsg [app_id=com.rtosta.zapzap] scratchpad show || exec ${lib.getExe pkgs.zapzap}";
 | 
			
		||||
        "Mod4+j" = "exec ${pkgs.sway}/bin/swaymsg [app_id=com.viber] scratchpad show || exec ${viber}/bin/viber";
 | 
			
		||||
        "Mod4+y" = ''
 | 
			
		||||
          exec ${pkgs.sway}/bin/swaymsg [app_id="pulsemixer"] scratchpad show || exec ${term} -a pulsemixer ${lib.getExe pkgs.pulsemixer}'';
 | 
			
		||||
        "Mod4+p" = "exec ${lib.getExe pkgs.tessen} -a copy";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
@ -1,6 +1,5 @@
 | 
			
		||||
{lib, ...}:
 | 
			
		||||
with lib;
 | 
			
		||||
{
 | 
			
		||||
with lib; {
 | 
			
		||||
  xdg.configFile."whatsapp-for-linux/settings.conf".source = builtins.toFile "settings.conf" (
 | 
			
		||||
    generators.toINI {} {
 | 
			
		||||
      General = {
 | 
			
		||||
							
								
								
									
										103
									
								
								home/zsh.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								home/zsh.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,103 @@
 | 
			
		||||
{pkgs, ...}: {
 | 
			
		||||
  programs.z-lua = {
 | 
			
		||||
    enableAliases = true;
 | 
			
		||||
    enableZshIntegration = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  programs.zsh = {
 | 
			
		||||
    autocd = true;
 | 
			
		||||
    enableCompletion = false;
 | 
			
		||||
    syntaxHighlighting.enable = true;
 | 
			
		||||
    defaultKeymap = "viins";
 | 
			
		||||
 | 
			
		||||
    shellAliases = {
 | 
			
		||||
      cfind = "cscope -C -R -L1";
 | 
			
		||||
      chmod = "chmod -v";
 | 
			
		||||
      chown = "chown -v";
 | 
			
		||||
      cp = "cp -v";
 | 
			
		||||
      rm = "rm -v";
 | 
			
		||||
      ip = "ip --color=auto";
 | 
			
		||||
      f = "''$(pay-respects zsh)";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    history = {
 | 
			
		||||
      expireDuplicatesFirst = true;
 | 
			
		||||
      extended = true;
 | 
			
		||||
      save = 100000;
 | 
			
		||||
      size = 100000;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    plugins = [
 | 
			
		||||
      {
 | 
			
		||||
        name = "nix_shell";
 | 
			
		||||
        src = pkgs.zsh-nix-shell;
 | 
			
		||||
        file = "share/zsh-nix-shell/nix-shell.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "nix_completion";
 | 
			
		||||
        src = pkgs.nix-zsh-completions;
 | 
			
		||||
        file = "share/zsh/plugins/nix/nix-zsh-completions.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "pure_prompt";
 | 
			
		||||
        src = pkgs.fetchFromGitHub {
 | 
			
		||||
          owner = "sindresorhus";
 | 
			
		||||
          repo = "pure";
 | 
			
		||||
          rev = "a02209d36c8509c0e62f44324127632999c9c0cf";
 | 
			
		||||
          hash = "sha256-BmQO4xqd/3QnpLUitD2obVxL0UulpboT8jGNEh4ri8k=";
 | 
			
		||||
        };
 | 
			
		||||
        file = "pure.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "fzf";
 | 
			
		||||
        src = pkgs.fzf-zsh;
 | 
			
		||||
        file = "share/zsh/plugins/fzf-zsh/fzf-zsh.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "zsh-sudo";
 | 
			
		||||
        src = pkgs.fetchFromGitHub {
 | 
			
		||||
          owner = "hcgraf";
 | 
			
		||||
          repo = "zsh-sudo";
 | 
			
		||||
          rev = "d8084def6bb1bde2482e7aa636743f40c69d9b32";
 | 
			
		||||
          sha256 = "1dpm51w3wjxil8sxqw4qxim5kmf6afmkwz1yfhldpdlqm7rfwpi3";
 | 
			
		||||
        };
 | 
			
		||||
        file = "sudo.plugin.zsh";
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    envExtra = '''';
 | 
			
		||||
 | 
			
		||||
    initExtra = ''
 | 
			
		||||
           # binds
 | 
			
		||||
           bindkey '^K' fzf-file-widget
 | 
			
		||||
 | 
			
		||||
           # options
 | 
			
		||||
           setopt nobeep
 | 
			
		||||
           setopt nopromptcr
 | 
			
		||||
           setopt c_bases
 | 
			
		||||
           setopt completeinword
 | 
			
		||||
           setopt completealiases
 | 
			
		||||
           setopt notify
 | 
			
		||||
 | 
			
		||||
           #
 | 
			
		||||
           RPS1=""
 | 
			
		||||
 | 
			
		||||
           #
 | 
			
		||||
           function chpwd() {
 | 
			
		||||
             ls;
 | 
			
		||||
           }
 | 
			
		||||
 | 
			
		||||
           eval "$(direnv hook zsh)"
 | 
			
		||||
           zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
 | 
			
		||||
 | 
			
		||||
           if [[ -n "$PS1" ]] && [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
 | 
			
		||||
      TMUX_EXE="${pkgs.tmux}/bin/tmux"
 | 
			
		||||
             systemd-run --scope --user $TMUX_EXE attach-session -t $USER || systemd-run --scope --user $TMUX_EXE new-session -s $USER
 | 
			
		||||
           fi
 | 
			
		||||
 | 
			
		||||
           if [[ -n "$BUBBLEWRAP_DIR" ]]; then
 | 
			
		||||
      RPS1="{{$BUBBLEWRAP_DIR}}"
 | 
			
		||||
           fi
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,19 +1,16 @@
 | 
			
		||||
{ config
 | 
			
		||||
, pkgs
 | 
			
		||||
, lib
 | 
			
		||||
, project-cloud
 | 
			
		||||
, nvim
 | 
			
		||||
, system
 | 
			
		||||
, ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  project-cloud,
 | 
			
		||||
  nvim,
 | 
			
		||||
  system,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [];
 | 
			
		||||
 | 
			
		||||
  nix.optimise.automatic = true;
 | 
			
		||||
  nix.settings.experimental-features = [
 | 
			
		||||
    "nix-command"
 | 
			
		||||
    "flakes"
 | 
			
		||||
  ];
 | 
			
		||||
  nix.settings.experimental-features = ["nix-command" "flakes"];
 | 
			
		||||
  system.switch = {
 | 
			
		||||
    enable = false;
 | 
			
		||||
    enableNg = true;
 | 
			
		||||
@ -24,10 +21,7 @@
 | 
			
		||||
  boot.loader.systemd-boot.configurationLimit = 2;
 | 
			
		||||
  boot.loader.efi.canTouchEfiVariables = true;
 | 
			
		||||
  boot.kernelPackages = pkgs.linuxPackages_latest;
 | 
			
		||||
  boot.kernelParams = [
 | 
			
		||||
    "ip=dhcp"
 | 
			
		||||
    "console=tty"
 | 
			
		||||
  ];
 | 
			
		||||
  boot.kernelParams = ["ip=dhcp"];
 | 
			
		||||
  boot.kernel.sysctl = {
 | 
			
		||||
    "net.core.default_qdisc" = "fq";
 | 
			
		||||
    "net.ipv4.tcp_congestion_control" = "bbr";
 | 
			
		||||
@ -35,10 +29,7 @@
 | 
			
		||||
 | 
			
		||||
  boot.initrd = {
 | 
			
		||||
    compressor = "zstd";
 | 
			
		||||
    availableKernelModules = [
 | 
			
		||||
      "virtio-pci"
 | 
			
		||||
      "virtio-gpu"
 | 
			
		||||
    ];
 | 
			
		||||
    availableKernelModules = ["virtio-pci"];
 | 
			
		||||
    systemd.enable = true;
 | 
			
		||||
    network = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
@ -79,23 +70,14 @@
 | 
			
		||||
 | 
			
		||||
  programs.mosh.enable = true;
 | 
			
		||||
 | 
			
		||||
  /* Srv settings found on SrvOS */
 | 
			
		||||
  fonts.fontconfig.enable = lib.mkDefault false;
 | 
			
		||||
  xdg.autostart.enable = lib.mkDefault false;
 | 
			
		||||
  xdg.icons.enable = lib.mkDefault false;
 | 
			
		||||
  xdg.menus.enable = lib.mkDefault false;
 | 
			
		||||
  xdg.mime.enable = lib.mkDefault false;
 | 
			
		||||
  xdg.sounds.enable = lib.mkDefault false;
 | 
			
		||||
 | 
			
		||||
  mailserver = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    debug.all = false;
 | 
			
		||||
    debug = false;
 | 
			
		||||
    fqdn = "mail.project-cloud.net";
 | 
			
		||||
    domains = ["project-cloud.net"];
 | 
			
		||||
    enableSubmissionSsl = true;
 | 
			
		||||
    enableImap = false;
 | 
			
		||||
    enableImapSsl = true;
 | 
			
		||||
    stateVersion = 3;
 | 
			
		||||
 | 
			
		||||
    # A list of all login accounts. To create the password hashes, use
 | 
			
		||||
    # nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt'
 | 
			
		||||
@ -122,11 +104,7 @@
 | 
			
		||||
      port = 22;
 | 
			
		||||
    }
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  services.opendkim = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    selector = "mail";
 | 
			
		||||
  };
 | 
			
		||||
  services.opendkim.enable = true;
 | 
			
		||||
 | 
			
		||||
  services.miniflux = {
 | 
			
		||||
    enable = false;
 | 
			
		||||
@ -258,21 +236,22 @@
 | 
			
		||||
      REGISTER_EMAIL_CONFIRM = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    settings."markup.restructuredtext" =
 | 
			
		||||
      let
 | 
			
		||||
        docutils = pkgs.python3.withPackages (
 | 
			
		||||
          ps: with ps; [
 | 
			
		||||
            docutils
 | 
			
		||||
            pygments
 | 
			
		||||
          ]
 | 
			
		||||
        );
 | 
			
		||||
      in
 | 
			
		||||
      {
 | 
			
		||||
    settings."markup.restructuredtext" = let
 | 
			
		||||
      docutils =
 | 
			
		||||
        pkgs.python3.withPackages (ps: with ps; [docutils pygments]);
 | 
			
		||||
    in {
 | 
			
		||||
      ENABLED = true;
 | 
			
		||||
      FILE_EXTENSIONS = ".rst";
 | 
			
		||||
      RENDER_COMMAND = "${docutils}/bin/rst2html.py";
 | 
			
		||||
      IS_INPUT_FILE = false;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    settings."markup.typst" = {
 | 
			
		||||
      ENABLED = true;
 | 
			
		||||
      FILE_EXTENSIONS = ".typ";
 | 
			
		||||
      RENDER_COMMAND = "timeout 30s ${lib.getExe pkgs.python3Packages.pygments} -f html -O full";
 | 
			
		||||
      IS_INPUT_FILE = false;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services.nfs.server.enable = false;
 | 
			
		||||
@ -307,7 +286,9 @@
 | 
			
		||||
    adminEmail = "asmir.abdulahovic" + "@" + "gmail.com";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # needed for sendmail mail functionality
 | 
			
		||||
  /*
 | 
			
		||||
  needed for sendmail mail functionality
 | 
			
		||||
  */
 | 
			
		||||
  users.users.gitea.extraGroups = ["postdrop"];
 | 
			
		||||
  systemd.services.gitea.serviceConfig = {
 | 
			
		||||
    RestrictAddressFamilies = ["AF_NETLINK"];
 | 
			
		||||
@ -345,28 +326,16 @@
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  networking.hostName = "magpie";
 | 
			
		||||
  networking.nftables.enable = true;
 | 
			
		||||
  networking.firewall = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    allowedTCPPorts = [
 | 
			
		||||
      80
 | 
			
		||||
      443
 | 
			
		||||
      587
 | 
			
		||||
      2049
 | 
			
		||||
    ]; # http, mail, mail, nfs
 | 
			
		||||
    allowedUDPPorts = [
 | 
			
		||||
      443
 | 
			
		||||
      51820
 | 
			
		||||
    ]; # mail, wireguard
 | 
			
		||||
    allowPing = true;
 | 
			
		||||
    logRefusedConnections = lib.mkDefault false;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  networking.nat = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    externalInterface = "enp1s0";
 | 
			
		||||
    internalInterfaces = [ "wg0" ];
 | 
			
		||||
  };
 | 
			
		||||
  networking.firewall.enable = true;
 | 
			
		||||
  networking.firewall.allowedTCPPorts = [80 443 587 2049]; # http, mail, mail, nfs
 | 
			
		||||
  networking.firewall.allowedUDPPorts = [443 51820]; #mail, wireguard
 | 
			
		||||
  networking.firewall.allowPing = true;
 | 
			
		||||
  networking.firewall.logRefusedConnections = lib.mkDefault false;
 | 
			
		||||
 | 
			
		||||
  networking.nat.enable = true;
 | 
			
		||||
  networking.nat.externalInterface = "enp1s0";
 | 
			
		||||
  networking.nat.internalInterfaces = ["wg0"];
 | 
			
		||||
 | 
			
		||||
  networking.networkmanager.enable = true;
 | 
			
		||||
  networking.wireless.enable = false;
 | 
			
		||||
@ -378,13 +347,13 @@
 | 
			
		||||
 | 
			
		||||
      # This allows the wireguard server to route your traffic to the internet and hence be like a VPN
 | 
			
		||||
      # For this to work you have to set the dnsserver IP of your router (or dnsserver of choice) in your clients
 | 
			
		||||
      #postSetup = ''
 | 
			
		||||
      #  ${pkgs.nftables}/bin/nft add rule ip nat POSTROUTING oifname "eth0" ip saddr 10.100.0.0/24 counter masquerade
 | 
			
		||||
      #'';
 | 
			
		||||
      # This undoes the above command, TODO fix command below to be more specific
 | 
			
		||||
      #postShutdown = ''
 | 
			
		||||
      #  ${pkgs.nftables}/bin/nft flush table ip nat
 | 
			
		||||
      #'';
 | 
			
		||||
      postSetup = ''
 | 
			
		||||
        ${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE
 | 
			
		||||
      '';
 | 
			
		||||
      # This undoes the above command
 | 
			
		||||
      postShutdown = ''
 | 
			
		||||
        ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE
 | 
			
		||||
      '';
 | 
			
		||||
      privateKeyFile = config.sops.secrets."wg_privkey".path;
 | 
			
		||||
 | 
			
		||||
      peers = [
 | 
			
		||||
 | 
			
		||||
@ -5,18 +5,12 @@
 | 
			
		||||
  lib,
 | 
			
		||||
  modulesPath,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    (modulesPath + "/installer/scan/not-detected.nix")
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  boot.initrd.availableKernelModules = [
 | 
			
		||||
    "xhci_pci"
 | 
			
		||||
    "virtio_pci"
 | 
			
		||||
    "usbhid"
 | 
			
		||||
    "sr_mod"
 | 
			
		||||
  ];
 | 
			
		||||
  boot.initrd.availableKernelModules = ["xhci_pci" "virtio_pci" "usbhid" "sr_mod"];
 | 
			
		||||
  boot.initrd.kernelModules = [];
 | 
			
		||||
  boot.kernelModules = [];
 | 
			
		||||
  boot.extraModulePackages = [];
 | 
			
		||||
 | 
			
		||||
@ -1,22 +1,18 @@
 | 
			
		||||
{ config
 | 
			
		||||
, nvim
 | 
			
		||||
, pkgs
 | 
			
		||||
, system
 | 
			
		||||
, zremap
 | 
			
		||||
, ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  USER = "akill";
 | 
			
		||||
in
 | 
			
		||||
# Edit this configuration file to define what should be installed on
 | 
			
		||||
# your system.  Help is available in the configuration.nix(5) man page
 | 
			
		||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  zremap,
 | 
			
		||||
  system,
 | 
			
		||||
  nvim,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [];
 | 
			
		||||
 | 
			
		||||
  system.stateVersion = "23.05";
 | 
			
		||||
  system.autoUpgrade.enable = false;
 | 
			
		||||
  system.switch = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    enableNg = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  sops.age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"];
 | 
			
		||||
  sops.secrets."peerix/private" = {
 | 
			
		||||
@ -40,11 +36,7 @@ in
 | 
			
		||||
    gc.options = "--delete-older-than 7d";
 | 
			
		||||
    package = pkgs.nixVersions.latest;
 | 
			
		||||
    settings = {
 | 
			
		||||
      experimental-features = [
 | 
			
		||||
        "nix-command"
 | 
			
		||||
        "flakes"
 | 
			
		||||
      ];
 | 
			
		||||
      trusted-users = [ "akill" "root" ];
 | 
			
		||||
      experimental-features = ["nix-command" "flakes"];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -78,36 +70,26 @@ in
 | 
			
		||||
    readOnlyNixStore = true;
 | 
			
		||||
    supportedFilesystems = ["btrfs"];
 | 
			
		||||
    tmp.useTmpfs = true;
 | 
			
		||||
    tmp.tmpfsSize = "80%";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  security = {
 | 
			
		||||
    rtkit.enable = true;
 | 
			
		||||
    allowSimultaneousMultithreading = true;
 | 
			
		||||
    sudo.enable = true;
 | 
			
		||||
    doas.enable = true;
 | 
			
		||||
    doas.extraRules = [
 | 
			
		||||
      {
 | 
			
		||||
        users = [ USER ];
 | 
			
		||||
        keepEnv = true;
 | 
			
		||||
        persist = true;
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
    acme = {
 | 
			
		||||
      acceptTerms = true;
 | 
			
		||||
      defaults.email = "aasmir@gmx.com";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  powerManagement = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    cpuFreqGovernor = "ondemand";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  networking = {
 | 
			
		||||
    nftables.enable = true;
 | 
			
		||||
    firewall = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      allowedTCPPorts = [
 | 
			
		||||
        80
 | 
			
		||||
        443
 | 
			
		||||
        51820
 | 
			
		||||
        8020
 | 
			
		||||
      ];
 | 
			
		||||
      allowedTCPPorts = [80 443 51820];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    hostName = "mediabox";
 | 
			
		||||
@ -116,21 +98,16 @@ in
 | 
			
		||||
    useDHCP = false;
 | 
			
		||||
    wireless.enable = false;
 | 
			
		||||
    wireless.interfaces = ["wlp3s0"];
 | 
			
		||||
    nameservers = [
 | 
			
		||||
      "127.0.0.1"
 | 
			
		||||
      "::1"
 | 
			
		||||
    ];
 | 
			
		||||
    nameservers = ["127.0.0.1" "::1"];
 | 
			
		||||
    dhcpcd.extraConfig = "nohook resolv.conf";
 | 
			
		||||
 | 
			
		||||
    networkmanager.dns = "none";
 | 
			
		||||
    extraHosts = ''
 | 
			
		||||
      192.168.1.173 nixy.lan
 | 
			
		||||
      192.168.88.171 jellyfin.mediabox.lan
 | 
			
		||||
      192.168.88.171 jellyseerr.mediabox.lan
 | 
			
		||||
      192.168.88.171 mediabox.lan
 | 
			
		||||
      192.168.88.171 qbittorrent.mediabox.lan
 | 
			
		||||
      192.168.88.1   router.lan
 | 
			
		||||
      192.168.88.231 workstation.lan
 | 
			
		||||
      192.168.88.121 ender.lan
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    wireguard.interfaces = {
 | 
			
		||||
@ -161,47 +138,44 @@ in
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  programs = {
 | 
			
		||||
    steam = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      remotePlay.openFirewall = true;
 | 
			
		||||
      dedicatedServer.openFirewall = false;
 | 
			
		||||
      localNetworkGameTransfers.openFirewall = true;
 | 
			
		||||
    };
 | 
			
		||||
    gnupg.agent = {
 | 
			
		||||
  programs.gnupg.agent = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    enableSSHSupport = true;
 | 
			
		||||
  };
 | 
			
		||||
    appimage = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      binfmt = true;
 | 
			
		||||
    };
 | 
			
		||||
    nix-ld = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
      libraries = with pkgs; [
 | 
			
		||||
        stdenv.cc.cc.lib
 | 
			
		||||
        zlib
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
    zsh.enable = true;
 | 
			
		||||
    firejail.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
  programs.zsh.enable = true;
 | 
			
		||||
  programs.light.enable = true;
 | 
			
		||||
  programs.firejail.enable = true;
 | 
			
		||||
  programs.adb.enable = false;
 | 
			
		||||
  programs.wireshark.enable = true;
 | 
			
		||||
  programs.sway.enable = true;
 | 
			
		||||
 | 
			
		||||
  # List services that you want to enable:
 | 
			
		||||
  systemd = {
 | 
			
		||||
    services = {
 | 
			
		||||
      "zremap@" = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        restartIfChanged = true;
 | 
			
		||||
      "macchanger-wireless" = {
 | 
			
		||||
        after = ["sys-subsystem-net-devices-wlp3s0.device"];
 | 
			
		||||
        before = ["network-pre.target"];
 | 
			
		||||
        bindsTo = ["sys-subsystem-net-devices-wlp3s0.device"];
 | 
			
		||||
        description = "Changes MAC of my wireless interface for privacy reasons";
 | 
			
		||||
        stopIfChanged = false;
 | 
			
		||||
        wantedBy = ["multi-user.target"];
 | 
			
		||||
        wants = ["network-pre.target"];
 | 
			
		||||
        script = ''
 | 
			
		||||
          ${pkgs.macchanger}/bin/macchanger -e wlp3s0 || true
 | 
			
		||||
        '';
 | 
			
		||||
        serviceConfig.Type = "oneshot";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      "zremap" = {
 | 
			
		||||
        description = "Intercepts keyboard udev events";
 | 
			
		||||
        wants = ["systemd-udevd.service"];
 | 
			
		||||
        wantedBy = ["multi-user.target"];
 | 
			
		||||
        serviceConfig.Nice = -20;
 | 
			
		||||
        unitConfig = {
 | 
			
		||||
          Description = "zremap on %I";
 | 
			
		||||
          ConditionPathExists = "%I";
 | 
			
		||||
        };
 | 
			
		||||
        serviceConfig = {
 | 
			
		||||
          Type = "simple";
 | 
			
		||||
          ExecStart = "${zremap.defaultPackage.${system}}/bin/zremap %I";
 | 
			
		||||
        };
 | 
			
		||||
        script = ''
 | 
			
		||||
          sleep 1
 | 
			
		||||
          ${zremap.defaultPackage.${system}}/bin/zremap \
 | 
			
		||||
          /dev/input/by-path/platform-i8042-serio-0-event-kbd
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      "wakeonlan" = {
 | 
			
		||||
@ -211,32 +185,33 @@ in
 | 
			
		||||
          Type = "oneshot";
 | 
			
		||||
          ExecStart = "${pkgs.ethtool}/sbin/ethtool -s enp0s25 wol m";
 | 
			
		||||
        };
 | 
			
		||||
        wantedBy = [
 | 
			
		||||
          "default.target"
 | 
			
		||||
          "suspend.target"
 | 
			
		||||
          "shutdown.target"
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
        wantedBy = ["default.target" "suspend.target" "shutdown.target"];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    coredump.enable = false;
 | 
			
		||||
    extraConfig = ''
 | 
			
		||||
      DefaultTimeoutStartSec=30s
 | 
			
		||||
      DefaultTimeoutStopSec=30s
 | 
			
		||||
      /*
 | 
			
		||||
      "cpu_setting" = {
 | 
			
		||||
        description = "Enable turboot boost and undervolt cpu after suspend";
 | 
			
		||||
        wantedBy = ["post-resume.target" "multi-user.target"];
 | 
			
		||||
        after = ["post-resume.target"];
 | 
			
		||||
        script = ''
 | 
			
		||||
                 echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
 | 
			
		||||
                 echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo
 | 
			
		||||
          ${pkgs.undervolt}/bin/undervolt --core -105 --cache -105 --uncore -105 --gpu -15 -p1 47 28 -p2 57 0.0025
 | 
			
		||||
        '';
 | 
			
		||||
        serviceConfig.Type = "oneshot";
 | 
			
		||||
      };
 | 
			
		||||
      */
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services = {
 | 
			
		||||
    acpid.enable = true;
 | 
			
		||||
    btrfs.autoScrub.enable = true;
 | 
			
		||||
    dbus.enable = true;
 | 
			
		||||
    dbus.implementation = "broker";
 | 
			
		||||
    envfs.enable = true;
 | 
			
		||||
    fstrim.enable = true;
 | 
			
		||||
    fwupd.enable = true;
 | 
			
		||||
    ntp.enable = true;
 | 
			
		||||
    openssh.enable = true;
 | 
			
		||||
    openssh.settings.PermitRootLogin = "yes";
 | 
			
		||||
    thinkfan.enable = false;
 | 
			
		||||
 | 
			
		||||
    xrdp = {
 | 
			
		||||
@ -250,13 +225,13 @@ in
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    jellyfin = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
      enable = true;
 | 
			
		||||
      user = "akill";
 | 
			
		||||
      openFirewall = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    jellyseerr = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
      enable = true;
 | 
			
		||||
      openFirewall = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@ -267,105 +242,58 @@ in
 | 
			
		||||
      pulse.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    avahi = {
 | 
			
		||||
    deluge = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
      nssmdns4 = false;
 | 
			
		||||
      user = "akill";
 | 
			
		||||
      openFirewall = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    libinput.enable = true;
 | 
			
		||||
    xserver = {
 | 
			
		||||
      dataDir = "/home/akill/.config/deluge";
 | 
			
		||||
      web = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
      dpi = 144;
 | 
			
		||||
      desktopManager.xterm.enable = false;
 | 
			
		||||
      desktopManager.plasma5.bigscreen.enable = true;
 | 
			
		||||
      #desktopManager.plasma6.enable = true;
 | 
			
		||||
      displayManager = {
 | 
			
		||||
        lightdm.enable = false;
 | 
			
		||||
        startx.enable = true;
 | 
			
		||||
        sddm.enable = true;
 | 
			
		||||
        sddm.wayland.enable = true;
 | 
			
		||||
        openFirewall = false;
 | 
			
		||||
      };
 | 
			
		||||
      config = {
 | 
			
		||||
        download_location = "/media";
 | 
			
		||||
        allow_remote = true;
 | 
			
		||||
        daemon_port = 58846;
 | 
			
		||||
      };
 | 
			
		||||
      windowManager.i3.enable = false;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    udev = {
 | 
			
		||||
      packages = [ ];
 | 
			
		||||
      extraRules = ''
 | 
			
		||||
        #zremap on new keyboard
 | 
			
		||||
        ACTION=="add", SUBSYSTEM=="input", ATTRS{phys}!="", KERNEL=="event[0-9]*", ENV{ID_INPUT_KEY}=="1", ENV{ID_INPUT_KEYBOARD}=="1", TAG+="systemd", ENV{SYSTEMD_WANTS}+="zremap@$env{DEVNAME}.service"
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    tlp = {
 | 
			
		||||
    transmission = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    batteryNotifier = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
      notifyCapacity = 20;
 | 
			
		||||
      suspendCapacity = 10;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    actkbd = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      bindings = [
 | 
			
		||||
        {
 | 
			
		||||
          keys = [ 115 ];
 | 
			
		||||
          events = [ "key" ];
 | 
			
		||||
          command = "XDG_RUNTIME_DIR=/run/user/$(id -u ${USER}) ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          keys = [ 114 ];
 | 
			
		||||
          events = [
 | 
			
		||||
            "key"
 | 
			
		||||
            "rep"
 | 
			
		||||
          ];
 | 
			
		||||
          command = "XDG_RUNTIME_DIR=/run/user/$(id -u ${USER}) ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          keys = [ 113 ];
 | 
			
		||||
          events = [
 | 
			
		||||
            "key"
 | 
			
		||||
            "rep"
 | 
			
		||||
          ];
 | 
			
		||||
          command = "XDG_RUNTIME_DIR=/run/user/$(id -u ${USER}) ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          keys = [ 224 ];
 | 
			
		||||
          events = [ "key" ];
 | 
			
		||||
          command = "${pkgs.light}/bin/light -U 5";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          keys = [ 225 ];
 | 
			
		||||
          events = [ "key" ];
 | 
			
		||||
          command = "${pkgs.light}/bin/light -A 5";
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dnscrypt-proxy2 = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      openFirewall = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        ipv6_servers = true;
 | 
			
		||||
        require_dnssec = true;
 | 
			
		||||
        require_nolog = true;
 | 
			
		||||
        require_nofilter = true;
 | 
			
		||||
        http3 = true;
 | 
			
		||||
 | 
			
		||||
        sources.public-resolvers = {
 | 
			
		||||
          urls = [
 | 
			
		||||
            "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
 | 
			
		||||
            "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
 | 
			
		||||
          ];
 | 
			
		||||
          cache_file = "/var/lib/dnscrypt-proxy/public-resolvers.md";
 | 
			
		||||
          minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
 | 
			
		||||
        rpc-whitelist = "192.168.88.*";
 | 
			
		||||
        download-dir = "/media";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    qbittorrent = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      user = "akill";
 | 
			
		||||
      openFirewall = true;
 | 
			
		||||
      dataDir = "/home/akill/.config/qbittorrent";
 | 
			
		||||
      port = 8081;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    nginx = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      recommendedGzipSettings = true;
 | 
			
		||||
      recommendedOptimisation = true;
 | 
			
		||||
      recommendedProxySettings = true;
 | 
			
		||||
      recommendedTlsSettings = true;
 | 
			
		||||
 | 
			
		||||
      virtualHosts."deluge.mediabox.lan" = {
 | 
			
		||||
        locations."/".proxyPass = "http://localhost:8112/";
 | 
			
		||||
      };
 | 
			
		||||
      virtualHosts."qbittorrent.mediabox.lan" = {
 | 
			
		||||
        locations."/".proxyPass = "http://localhost:8081/";
 | 
			
		||||
      };
 | 
			
		||||
      virtualHosts."jellyfin.mediabox.lan" = {
 | 
			
		||||
        locations."/".proxyPass = "http://localhost:8096/";
 | 
			
		||||
      };
 | 
			
		||||
      virtualHosts."jellyseerr.mediabox.lan" = {
 | 
			
		||||
        locations."/".proxyPass = "http://localhost:5055/";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    journald.extraConfig = ''
 | 
			
		||||
@ -376,53 +304,114 @@ in
 | 
			
		||||
      KillUserProcesses=yes
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    xserver = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      libinput.enable = true;
 | 
			
		||||
      desktopManager.xterm.enable = false;
 | 
			
		||||
      displayManager.lightdm.enable = false;
 | 
			
		||||
      displayManager.defaultSession = "none+icewm";
 | 
			
		||||
      windowManager.icewm.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  fonts = {
 | 
			
		||||
    fontconfig = {
 | 
			
		||||
      cache32Bit = true;
 | 
			
		||||
      allowBitmaps = true;
 | 
			
		||||
      useEmbeddedBitmaps = true;
 | 
			
		||||
      defaultFonts = {
 | 
			
		||||
        monospace = [ "JetBrainsMono" ];
 | 
			
		||||
      };
 | 
			
		||||
    udev.packages = [];
 | 
			
		||||
 | 
			
		||||
    tlp = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {};
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    packages = with pkgs; [
 | 
			
		||||
      dejavu_fonts
 | 
			
		||||
      dina-font
 | 
			
		||||
      fira-code
 | 
			
		||||
      fira-code-symbols
 | 
			
		||||
      font-awesome_6
 | 
			
		||||
      inconsolata
 | 
			
		||||
      iosevka
 | 
			
		||||
      jetbrains-mono
 | 
			
		||||
      liberation_ttf
 | 
			
		||||
      libertine
 | 
			
		||||
      noto-fonts
 | 
			
		||||
      noto-fonts-cjk-sans
 | 
			
		||||
      noto-fonts-color-emoji
 | 
			
		||||
      noto-fonts-emoji
 | 
			
		||||
      proggyfonts
 | 
			
		||||
      siji
 | 
			
		||||
      terminus_font
 | 
			
		||||
      terminus_font_ttf
 | 
			
		||||
      ubuntu_font_family
 | 
			
		||||
      vistafonts
 | 
			
		||||
    actkbd = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      bindings = [
 | 
			
		||||
        {
 | 
			
		||||
          keys = [121];
 | 
			
		||||
          events = ["key"];
 | 
			
		||||
          command = "${pkgs.alsaUtils}/bin/amixer -q set Master toggle";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          keys = [122];
 | 
			
		||||
          events = ["key" "rep"];
 | 
			
		||||
          command = "${pkgs.alsaUtils}/bin/amixer -q set Master ${config.sound.mediaKeys.volumeStep}- unmute";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          keys = [123];
 | 
			
		||||
          events = ["key" "rep"];
 | 
			
		||||
          command = "${pkgs.alsaUtils}/bin/amixer -q set Master ${config.sound.mediaKeys.volumeStep}+ unmute";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          keys = [224];
 | 
			
		||||
          events = ["key"];
 | 
			
		||||
          command = "/run/current-system/sw/bin/light -U 5";
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          keys = [225];
 | 
			
		||||
          events = ["key"];
 | 
			
		||||
          command = "/run/current-system/sw/bin/light -A 5";
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    mpd = {
 | 
			
		||||
      musicDirectory = "/home/mpd/music";
 | 
			
		||||
      enable = false;
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        audio_output {
 | 
			
		||||
          type "pulse"
 | 
			
		||||
          name "pulsee srv"
 | 
			
		||||
          server "127.0.0.1"
 | 
			
		||||
        }
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    batteryNotifier = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      notifyCapacity = 20;
 | 
			
		||||
      suspendCapacity = 10;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dnscrypt-proxy2 = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        ipv6_servers = true;
 | 
			
		||||
        require_dnssec = true;
 | 
			
		||||
 | 
			
		||||
        sources.public-resolvers = {
 | 
			
		||||
          urls = [
 | 
			
		||||
            "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
 | 
			
		||||
            "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
 | 
			
		||||
          ];
 | 
			
		||||
          cache_file = "/var/lib/dnscrypt-proxy/public-resolvers.md";
 | 
			
		||||
          minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fonts.packages = with pkgs; [
 | 
			
		||||
    dina-font
 | 
			
		||||
    fira-code
 | 
			
		||||
    fira-code-symbols
 | 
			
		||||
    font-awesome
 | 
			
		||||
    font-awesome_4
 | 
			
		||||
    iosevka
 | 
			
		||||
    jetbrains-mono
 | 
			
		||||
    liberation_ttf
 | 
			
		||||
    proggyfonts
 | 
			
		||||
    siji
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  virtualisation = {
 | 
			
		||||
    podman = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
      autoPrune.enable = true;
 | 
			
		||||
      enable = true;
 | 
			
		||||
      dockerCompat = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  sound.enable = true;
 | 
			
		||||
 | 
			
		||||
  hardware = {
 | 
			
		||||
    bluetooth = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      enable = false;
 | 
			
		||||
      settings = {
 | 
			
		||||
        General = {
 | 
			
		||||
          Enable = "Source,Sink,Media,Socket";
 | 
			
		||||
@ -430,9 +419,14 @@ in
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    graphics = {
 | 
			
		||||
    opengl = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      extraPackages = [ ];
 | 
			
		||||
      driSupport = true;
 | 
			
		||||
      driSupport32Bit = true;
 | 
			
		||||
      extraPackages = with pkgs; [
 | 
			
		||||
        intel-media-driver
 | 
			
		||||
        vaapiIntel
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -441,15 +435,10 @@ in
 | 
			
		||||
    algorithm = "zstd";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  users.users.${USER} = {
 | 
			
		||||
  users.users.akill = {
 | 
			
		||||
    isNormalUser = true;
 | 
			
		||||
    shell = pkgs.zsh;
 | 
			
		||||
    extraGroups = [
 | 
			
		||||
      "wheel"
 | 
			
		||||
      "tty"
 | 
			
		||||
      "audio"
 | 
			
		||||
      "sound"
 | 
			
		||||
    ];
 | 
			
		||||
    extraGroups = ["wireshark" "wheel" "kvm" "tty" "audio" "sound" "adbusers" "transmission"];
 | 
			
		||||
    openssh.authorizedKeys.keys = [
 | 
			
		||||
      (builtins.readFile ../nixy/ssh_pubkey)
 | 
			
		||||
    ];
 | 
			
		||||
@ -458,12 +447,7 @@ in
 | 
			
		||||
  users.users.ado = {
 | 
			
		||||
    isNormalUser = true;
 | 
			
		||||
    shell = pkgs.zsh;
 | 
			
		||||
    extraGroups = [
 | 
			
		||||
      "wheel"
 | 
			
		||||
      "tty"
 | 
			
		||||
      "audio"
 | 
			
		||||
      "sound"
 | 
			
		||||
    ];
 | 
			
		||||
    extraGroups = ["wireshark" "wheel" "kvm" "tty" "audio" "sound" "adbusers" "transmission"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  users.users.mediauser = {
 | 
			
		||||
 | 
			
		||||
@ -5,20 +5,12 @@
 | 
			
		||||
  lib,
 | 
			
		||||
  modulesPath,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    (modulesPath + "/installer/scan/not-detected.nix")
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  boot.initrd.availableKernelModules = [
 | 
			
		||||
    "xhci_pci"
 | 
			
		||||
    "ehci_pci"
 | 
			
		||||
    "ahci"
 | 
			
		||||
    "usb_storage"
 | 
			
		||||
    "sd_mod"
 | 
			
		||||
    "rtsx_pci_sdmmc"
 | 
			
		||||
  ];
 | 
			
		||||
  boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
 | 
			
		||||
  boot.initrd.kernelModules = [];
 | 
			
		||||
  boot.kernelModules = ["kvm-intel"];
 | 
			
		||||
  boot.extraModulePackages = [];
 | 
			
		||||
@ -26,11 +18,7 @@
 | 
			
		||||
  fileSystems."/" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/ae774285-60dc-4b08-ab26-8208e8f4e81e";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=root"
 | 
			
		||||
      "compress=lzo"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=root" "compress=lzo" "noatime"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  boot.initrd.luks.devices."enc".device = "/dev/disk/by-uuid/60aa7671-bfee-451b-b871-ac7c5a4a9f3a";
 | 
			
		||||
@ -38,41 +26,25 @@
 | 
			
		||||
  fileSystems."/home" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/ae774285-60dc-4b08-ab26-8208e8f4e81e";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=home"
 | 
			
		||||
      "compress=lzo"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=home" "compress=lzo" "noatime"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/nix" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/ae774285-60dc-4b08-ab26-8208e8f4e81e";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=nix"
 | 
			
		||||
      "compress=lzo"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=nix" "compress=lzo" "noatime"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/persist" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/ae774285-60dc-4b08-ab26-8208e8f4e81e";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=persist"
 | 
			
		||||
      "compress=lzo"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=persist" "compress=lzo" "noatime"];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/var/log" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/ae774285-60dc-4b08-ab26-8208e8f4e81e";
 | 
			
		||||
    fsType = "btrfs";
 | 
			
		||||
    options = [
 | 
			
		||||
      "subvol=log"
 | 
			
		||||
      "compress=lzo"
 | 
			
		||||
      "noatime"
 | 
			
		||||
    ];
 | 
			
		||||
    options = ["subvol=log" "compress=lzo" "noatime"];
 | 
			
		||||
    neededForBoot = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,8 +2,7 @@
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
}: {
 | 
			
		||||
  # Enable Nginx
 | 
			
		||||
  services.nginx = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
 | 
			
		||||
@ -4,13 +4,11 @@
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib;
 | 
			
		||||
let
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.services.qbittorrent;
 | 
			
		||||
  configDir = "${cfg.dataDir}/.config";
 | 
			
		||||
  openFilesLimit = 4096;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
in {
 | 
			
		||||
  options.services.qbittorrent = {
 | 
			
		||||
    enable = mkOption {
 | 
			
		||||
      type = types.bool;
 | 
			
		||||
@ -112,10 +110,7 @@ in
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    users.groups = mkIf (cfg.group == "qbittorrent") {
 | 
			
		||||
      qbittorrent = {
 | 
			
		||||
        gid = null;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    users.groups =
 | 
			
		||||
      mkIf (cfg.group == "qbittorrent") {qbittorrent = {gid = null;};};
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,21 +1,18 @@
 | 
			
		||||
{ config
 | 
			
		||||
, nix-xilinx
 | 
			
		||||
, nvim
 | 
			
		||||
, pkgs
 | 
			
		||||
, system
 | 
			
		||||
, zremap
 | 
			
		||||
, ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  USER = "akill";
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  nix-xilinx,
 | 
			
		||||
  nvim,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  system,
 | 
			
		||||
  zremap,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [];
 | 
			
		||||
 | 
			
		||||
  system.stateVersion = "23.05";
 | 
			
		||||
  system.autoUpgrade.enable = false;
 | 
			
		||||
  system.switch = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    enable = false;
 | 
			
		||||
    enableNg = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -47,12 +44,12 @@ in
 | 
			
		||||
 | 
			
		||||
      "borgbase_enc_key" = {
 | 
			
		||||
        sopsFile = ./secrets/borgbase_enc_key.yaml;
 | 
			
		||||
        owner = config.users.users.${USER}.name;
 | 
			
		||||
        owner = config.users.users.akill.name;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      "borgbase_ssh_key" = {
 | 
			
		||||
        sopsFile = ./secrets/borgbase_ssh_key.yaml;
 | 
			
		||||
        owner = config.users.users.${USER}.name;
 | 
			
		||||
        owner = config.users.users.akill.name;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
@ -64,36 +61,21 @@ in
 | 
			
		||||
    package = pkgs.nixVersions.latest;
 | 
			
		||||
    settings = {
 | 
			
		||||
      sandbox = true;
 | 
			
		||||
      experimental-features = [
 | 
			
		||||
        "nix-command"
 | 
			
		||||
        "flakes"
 | 
			
		||||
      ];
 | 
			
		||||
      experimental-features = ["nix-command" "flakes"];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  boot = {
 | 
			
		||||
    extraModulePackages = with config.boot.kernelPackages; [
 | 
			
		||||
      usbip
 | 
			
		||||
      v4l2loopback
 | 
			
		||||
    ];
 | 
			
		||||
    extraModulePackages = with config.boot.kernelPackages; [usbip v4l2loopback];
 | 
			
		||||
    initrd.compressor = "zstd";
 | 
			
		||||
    initrd.kernelModules = [];
 | 
			
		||||
    initrd.systemd.enable = true;
 | 
			
		||||
    binfmt.emulatedSystems = [
 | 
			
		||||
      "wasm32-wasi"
 | 
			
		||||
      "x86_64-windows"
 | 
			
		||||
    ];
 | 
			
		||||
    kernelParams = [
 | 
			
		||||
      "psmouse.synaptics_intertouch=0"
 | 
			
		||||
      "mem_sleep_default=deep"
 | 
			
		||||
      "amdgpu.sg_display=0"
 | 
			
		||||
      "amdgpu.gttsize=2048"
 | 
			
		||||
    ];
 | 
			
		||||
    binfmt.emulatedSystems = ["wasm32-wasi" "x86_64-windows"];
 | 
			
		||||
    kernelPackages = pkgs.linuxPackages_latest;
 | 
			
		||||
    kernelParams = ["psmouse.synaptics_intertouch=0" "mem_sleep_default=deep"];
 | 
			
		||||
    kernel.sysctl = {
 | 
			
		||||
      "net.core.default_qdisc" = "fq";
 | 
			
		||||
      "net.ipv4.tcp_congestion_control" = "bbr";
 | 
			
		||||
      "kernel.unprivileged_userns_clone" = "1"; /* Needed with harderned kernel */
 | 
			
		||||
    };
 | 
			
		||||
    loader.efi.canTouchEfiVariables = true;
 | 
			
		||||
    loader.systemd-boot = {
 | 
			
		||||
@ -102,9 +84,7 @@ in
 | 
			
		||||
      memtest86.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
    readOnlyNixStore = true;
 | 
			
		||||
    supportedFilesystems = [
 | 
			
		||||
      "xfs"
 | 
			
		||||
    ];
 | 
			
		||||
    supportedFilesystems = ["f2fs" "xfs"];
 | 
			
		||||
    tmp.useTmpfs = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@ -115,7 +95,7 @@ in
 | 
			
		||||
    doas.enable = true;
 | 
			
		||||
    doas.extraRules = [
 | 
			
		||||
      {
 | 
			
		||||
        users = [ USER ];
 | 
			
		||||
        users = ["akill"];
 | 
			
		||||
        keepEnv = true;
 | 
			
		||||
        persist = true;
 | 
			
		||||
      }
 | 
			
		||||
@ -127,22 +107,13 @@ in
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  networking = {
 | 
			
		||||
    nftables.enable = true;
 | 
			
		||||
    firewall = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      allowedTCPPorts = [
 | 
			
		||||
        80
 | 
			
		||||
        443
 | 
			
		||||
        51820
 | 
			
		||||
        8020
 | 
			
		||||
      ];
 | 
			
		||||
      allowedTCPPorts = [80 443 51820 8020];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    hostName = "nixy";
 | 
			
		||||
    nameservers = [
 | 
			
		||||
      "127.0.0.1"
 | 
			
		||||
      "::1"
 | 
			
		||||
    ];
 | 
			
		||||
    nameservers = ["127.0.0.1" "::1"];
 | 
			
		||||
    dhcpcd.extraConfig = "nohook resolv.conf";
 | 
			
		||||
 | 
			
		||||
    extraHosts = ''
 | 
			
		||||
@ -204,10 +175,7 @@ in
 | 
			
		||||
  time.timeZone = "Europe/Sarajevo";
 | 
			
		||||
 | 
			
		||||
  nixpkgs.config.allowUnfree = true;
 | 
			
		||||
  nixpkgs.overlays = [
 | 
			
		||||
    nix-xilinx.overlay
 | 
			
		||||
    nvim.overlays.${system}.overlay
 | 
			
		||||
  ];
 | 
			
		||||
  nixpkgs.overlays = [nix-xilinx.overlay nvim.overlays.${system}.overlay];
 | 
			
		||||
  environment = {
 | 
			
		||||
    etc = {
 | 
			
		||||
      "firejail/qutebrowser.local".text = ''
 | 
			
		||||
@ -238,13 +206,6 @@ in
 | 
			
		||||
      enable = true;
 | 
			
		||||
      binfmt = true;
 | 
			
		||||
    };
 | 
			
		||||
    nix-ld = {
 | 
			
		||||
      enable = false;
 | 
			
		||||
      libraries = with pkgs; [
 | 
			
		||||
        stdenv.cc.cc.lib
 | 
			
		||||
        zlib
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
    zsh.enable = true;
 | 
			
		||||
    firejail.enable = true;
 | 
			
		||||
    adb.enable = true;
 | 
			
		||||
@ -257,14 +218,6 @@ in
 | 
			
		||||
  # List services that you want to enable:
 | 
			
		||||
  systemd = {
 | 
			
		||||
    services = {
 | 
			
		||||
 | 
			
		||||
      # Fix issue where systemd-vconsole-setup failes to find keymap
 | 
			
		||||
      systemd-vconsole-setup = {
 | 
			
		||||
        unitConfig = {
 | 
			
		||||
          After = "local-fs.target";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      "zremap@" = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        restartIfChanged = true;
 | 
			
		||||
@ -307,9 +260,7 @@ in
 | 
			
		||||
            ${pkgs.iproute2}/bin/ip link set proton_wg netns wg
 | 
			
		||||
            ${pkgs.iproute2}/bin/ip -n wg address add 10.2.0.2/32 dev proton_wg
 | 
			
		||||
            ${pkgs.iproute2}/bin/ip netns exec wg \
 | 
			
		||||
              ${pkgs.wireguard-tools}/bin/wg set "proton_wg" private-key "${
 | 
			
		||||
                config.sops.secrets."wg_privkey_proton".path
 | 
			
		||||
              }"
 | 
			
		||||
              ${pkgs.wireguard-tools}/bin/wg set "proton_wg" private-key "${config.sops.secrets."wg_privkey_proton".path}"
 | 
			
		||||
            ${pkgs.iproute2}/bin/ip netns exec wg \
 | 
			
		||||
              ${pkgs.wireguard-tools}/bin/wg set "proton_wg" peer "g6DkXWKI/68RsLjROIwCEcyB/ZhyK5Q7OWcz1TtqER0=" \
 | 
			
		||||
                endpoint "$ENDPOINT_IP:51820" \
 | 
			
		||||
@ -378,7 +329,6 @@ in
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    coredump.enable = false;
 | 
			
		||||
    extraConfig = ''
 | 
			
		||||
      DefaultTimeoutStartSec=30s
 | 
			
		||||
      DefaultTimeoutStopSec=30s
 | 
			
		||||
@ -389,7 +339,6 @@ in
 | 
			
		||||
    acpid.enable = true;
 | 
			
		||||
    dbus.enable = true;
 | 
			
		||||
    dbus.implementation = "broker";
 | 
			
		||||
    envfs.enable = true;
 | 
			
		||||
    fstrim.enable = true;
 | 
			
		||||
    fwupd.enable = true;
 | 
			
		||||
    ntp.enable = true;
 | 
			
		||||
@ -422,10 +371,7 @@ in
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    udev = {
 | 
			
		||||
      packages = [
 | 
			
		||||
        pkgs.openhantek6022
 | 
			
		||||
        pkgs.openocd
 | 
			
		||||
      ];
 | 
			
		||||
      packages = [pkgs.openhantek6022 pkgs.openocd];
 | 
			
		||||
      extraRules = ''
 | 
			
		||||
        #Xilinx FTDI
 | 
			
		||||
        ACTION=="add", ATTR{idVendor}=="0403", ATTR{manufacturer}=="Xilinx", MODE:="666"
 | 
			
		||||
@ -444,43 +390,33 @@ in
 | 
			
		||||
 | 
			
		||||
    tlp = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        START_CHARGE_THRESH_BAT0 = 70;
 | 
			
		||||
        STOP_CHARGE_THRESH_BAT0 = 86;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    batteryNotifier = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      notifyCapacity = 12;
 | 
			
		||||
      suspendCapacity = 5;
 | 
			
		||||
      notifyCapacity = 20;
 | 
			
		||||
      suspendCapacity = 10;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    actkbd = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      bindings = [
 | 
			
		||||
        {
 | 
			
		||||
          keys = [ 115 ];
 | 
			
		||||
          keys = [113];
 | 
			
		||||
          events = ["key"];
 | 
			
		||||
          command = "XDG_RUNTIME_DIR=/run/user/$(id -u ${USER}) ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
 | 
			
		||||
          command = "/run/current-system/sw/bin/runuser -l akill -c 'amixer -q set Master toggle'";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          keys = [114];
 | 
			
		||||
          events = [
 | 
			
		||||
            "key"
 | 
			
		||||
            "rep"
 | 
			
		||||
          ];
 | 
			
		||||
          command = "XDG_RUNTIME_DIR=/run/user/$(id -u ${USER}) ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
 | 
			
		||||
          events = ["key" "rep"];
 | 
			
		||||
          command = "/run/current-system/sw/bin/runuser -l akill -c 'amixer -q set Master 5%- unmute'";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          keys = [ 113 ];
 | 
			
		||||
          events = [
 | 
			
		||||
            "key"
 | 
			
		||||
            "rep"
 | 
			
		||||
          ];
 | 
			
		||||
          command = "XDG_RUNTIME_DIR=/run/user/$(id -u ${USER}) ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
 | 
			
		||||
          keys = [115];
 | 
			
		||||
          events = ["key" "rep"];
 | 
			
		||||
          command = "/run/current-system/sw/bin/runuser -l akill -c 'amixer -q set Master 5%+ unmute'";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
@ -511,18 +447,16 @@ in
 | 
			
		||||
            "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
 | 
			
		||||
            "https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
 | 
			
		||||
          ];
 | 
			
		||||
          cache_file = "/var/lib/dnscrypt-proxy/public-resolvers.md";
 | 
			
		||||
          cache_file = "public-resolvers.md";
 | 
			
		||||
          minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    borgbackup.jobs."borgbase" =
 | 
			
		||||
      let
 | 
			
		||||
        user = config.users.users.${USER};
 | 
			
		||||
    borgbackup.jobs."borgbase" = let
 | 
			
		||||
      user = config.users.users.akill;
 | 
			
		||||
      home = user.home;
 | 
			
		||||
      in
 | 
			
		||||
      {
 | 
			
		||||
    in {
 | 
			
		||||
      user = user.name;
 | 
			
		||||
      paths = [
 | 
			
		||||
        (home + "/pic/priv")
 | 
			
		||||
@ -613,14 +547,6 @@ in
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  virtualisation = {
 | 
			
		||||
    waydroid.enable = false;
 | 
			
		||||
    libvirtd = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      allowedBridges = [
 | 
			
		||||
        "virbr0"
 | 
			
		||||
        "br0"
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
  spiceUSBRedirection.enable = true;
 | 
			
		||||
    containers.storage.settings = {
 | 
			
		||||
      storage = {
 | 
			
		||||
@ -653,23 +579,13 @@ in
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  zramSwap = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    enable = false;
 | 
			
		||||
    algorithm = "zstd";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  users.users.${USER} = {
 | 
			
		||||
  users.users.akill = {
 | 
			
		||||
    isNormalUser = true;
 | 
			
		||||
    shell = pkgs.zsh;
 | 
			
		||||
    extraGroups = [
 | 
			
		||||
      "adbusers"
 | 
			
		||||
      "audio"
 | 
			
		||||
      "dialout"
 | 
			
		||||
      "kvm"
 | 
			
		||||
      "plugdev"
 | 
			
		||||
      "sound"
 | 
			
		||||
      "tty"
 | 
			
		||||
      "wheel"
 | 
			
		||||
      "wireshark"
 | 
			
		||||
    ];
 | 
			
		||||
    extraGroups = ["wireshark" "kvm" "tty" "audio" "sound" "adbusers" "dialout" "wheel"];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,60 +1,39 @@
 | 
			
		||||
# 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,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{ config, lib, pkgs, modulesPath, ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    (modulesPath + "/installer/scan/not-detected.nix")
 | 
			
		||||
  imports =
 | 
			
		||||
    [ (modulesPath + "/installer/scan/not-detected.nix")
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
  boot.initrd.luks.devices."crypt_dev".device =
 | 
			
		||||
    "/dev/disk/by-uuid/e10821b9-5426-4f03-b716-1645a64fcd6a";
 | 
			
		||||
  boot.initrd.luks.devices."crypt_dev".device = "/dev/disk/by-uuid/e10821b9-5426-4f03-b716-1645a64fcd6a";
 | 
			
		||||
  boot.initrd.luks.devices."crypt_dev".allowDiscards = true;
 | 
			
		||||
  boot.initrd.availableKernelModules = [
 | 
			
		||||
    "nvme"
 | 
			
		||||
    "ehci_pci"
 | 
			
		||||
    "xhci_pci"
 | 
			
		||||
    "uas"
 | 
			
		||||
    "usb_storage"
 | 
			
		||||
    "sd_mod"
 | 
			
		||||
    "rtsx_pci_sdmmc"
 | 
			
		||||
  ];
 | 
			
		||||
  boot.initrd.availableKernelModules = [ "nvme" "ehci_pci" "xhci_pci" "uas" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
 | 
			
		||||
  boot.initrd.kernelModules = [ "dm-snapshot" ];
 | 
			
		||||
  boot.kernelModules = [
 | 
			
		||||
    "kvm-amd"
 | 
			
		||||
    "amd-gpu"
 | 
			
		||||
  ];
 | 
			
		||||
  boot.kernelModules = [ "kvm-amd" "amd-gpu" ];
 | 
			
		||||
  boot.extraModulePackages = [ ];
 | 
			
		||||
 | 
			
		||||
  fileSystems."/" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/c461c971-54ca-4fb7-91e8-6ac70de53ef2";
 | 
			
		||||
  fileSystems."/" =
 | 
			
		||||
    { device = "/dev/disk/by-uuid/c461c971-54ca-4fb7-91e8-6ac70de53ef2";
 | 
			
		||||
      fsType = "xfs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/nix" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/eeaa6fab-d67d-400f-b6d4-b1f44c2e0047";
 | 
			
		||||
  fileSystems."/nix" =
 | 
			
		||||
    { device = "/dev/disk/by-uuid/eeaa6fab-d67d-400f-b6d4-b1f44c2e0047";
 | 
			
		||||
      fsType = "xfs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/home" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/aeaa71ca-a439-4ef3-9ab8-db7ae8f59376";
 | 
			
		||||
  fileSystems."/home" =
 | 
			
		||||
    { device = "/dev/disk/by-uuid/aeaa71ca-a439-4ef3-9ab8-db7ae8f59376";
 | 
			
		||||
      fsType = "xfs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/boot" = {
 | 
			
		||||
    device = "/dev/disk/by-uuid/828E-F3C3";
 | 
			
		||||
  fileSystems."/boot" =
 | 
			
		||||
    { device = "/dev/disk/by-uuid/828E-F3C3";
 | 
			
		||||
      fsType = "vfat";
 | 
			
		||||
    options = [
 | 
			
		||||
      "fmask=0022"
 | 
			
		||||
      "dmask=0022"
 | 
			
		||||
    ];
 | 
			
		||||
      options = [ "fmask=0022" "dmask=0022" ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  swapDevices = [ ];
 | 
			
		||||
 | 
			
		||||
@ -115,8 +115,7 @@ stdenv.mkDerivation {
 | 
			
		||||
    xorg.libxkbfile
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  installPhase =
 | 
			
		||||
    let
 | 
			
		||||
  installPhase = let
 | 
			
		||||
    viberWrap = writeShellScriptBin "viberWrap" ''
 | 
			
		||||
      ${bubblewrap}/bin/bwrap --bind / / \
 | 
			
		||||
      --dev /dev \
 | 
			
		||||
@ -125,8 +124,7 @@ stdenv.mkDerivation {
 | 
			
		||||
      --bind  $HOME/Downloads/ $HOME/Downloads \
 | 
			
		||||
      $@
 | 
			
		||||
    '';
 | 
			
		||||
    in
 | 
			
		||||
    ''
 | 
			
		||||
  in ''
 | 
			
		||||
    dpkg-deb -x $src $out
 | 
			
		||||
    mkdir -p $out/bin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user