Compare commits
50 Commits
6ef275870d
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2be1db1075 | |||
| e6842b86f2 | |||
| dc7c56b81d | |||
| 053cbe7ee3 | |||
| a1cfce2743 | |||
| ea8df341e6 | |||
| 1f73e1ff9d | |||
| 74501adfca | |||
| 6ee7bfb78a | |||
| 5fcfd51b4a | |||
| 20e97efe95 | |||
| cc8299c5f5 | |||
| 1763871dda | |||
| 3d0484222e | |||
| bc9b620733 | |||
| f028201829 | |||
| d45c47d157 | |||
| 749ba8fc25 | |||
| 70c865fd72 | |||
| 256b849f2f | |||
| 729d2d44f7 | |||
| ace638529b | |||
| e71bb26d7d | |||
| 1b05b0cc6f | |||
| 0d20030f58 | |||
| 61606f433b | |||
| 513c6eae3c | |||
| d94c786424 | |||
| 87a00571f7 | |||
| 258303b5b3 | |||
| f19b5b45b4 | |||
| c52c3a9f01 | |||
| 56d21fd8a2 | |||
| 2df69949cb | |||
| c0a7615fc2 | |||
| c2db9db949 | |||
| 9a76694af3 | |||
| a196e47fb7 | |||
| 605c1b4ea3 | |||
| 9d5ffed340 | |||
| 726fce7949 | |||
| 1927c2ca09 | |||
| 51764389c5 | |||
| 33d9482892 | |||
| b652047222 | |||
| 1707567e36 | |||
| acdfe76b54 | |||
| c3c3649e21 | |||
| 678d9874ff | |||
| d41f27f465 |
@@ -6,21 +6,72 @@
|
|||||||
let
|
let
|
||||||
myRizin = pkgs.rizin.passthru.withPlugins
|
myRizin = pkgs.rizin.passthru.withPlugins
|
||||||
(plugins: [ plugins.jsdec plugins.rz-ghidra ]);
|
(plugins: [ plugins.jsdec plugins.rz-ghidra ]);
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./services/virtual.nix
|
./services/virtual.nix
|
||||||
./services/x.nix
|
./services/x.nix
|
||||||
|
./services/timer.nix
|
||||||
./services/sound.nix
|
./services/sound.nix
|
||||||
./programs/hyprland.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
services.nfs.server = {
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
enable = true;
|
||||||
boot.loader.grub.device = "/dev/nvme1n1p1";
|
exports = ''
|
||||||
|
/home/vagrant *(rw,sync,no_subtree_check,no_root_squash)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.resolved = {
|
||||||
|
enable = true;
|
||||||
|
dnssec = "true";
|
||||||
|
};
|
||||||
|
networking.nameservers = [ "1.1.1.1" "8.8.8.8" ];
|
||||||
|
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot.enable = false;
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
efiSysMountPoint = "/boot/efi";
|
||||||
|
};
|
||||||
|
grub = {
|
||||||
|
efiSupport = true;
|
||||||
|
device = "nodev";
|
||||||
|
extraConfig = ''
|
||||||
|
GRUB_DEFAULT=saved
|
||||||
|
GRUB_SAFEDEFAULT=false
|
||||||
|
'';
|
||||||
|
useOSProber = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.sudo = {
|
||||||
|
enable = true;
|
||||||
|
extraRules = [{
|
||||||
|
commands = [{
|
||||||
|
command = "${pkgs.grub2}/bin/grub-reboot";
|
||||||
|
options = [ "NOPASSWD" ];
|
||||||
|
}];
|
||||||
|
groups = [ "wheel" ];
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
|
||||||
|
security.pam.loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "*";
|
||||||
|
type = "soft";
|
||||||
|
item = "nofile";
|
||||||
|
value = "32768";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "*";
|
||||||
|
type = "hard";
|
||||||
|
item = "nofile";
|
||||||
|
value = "65537";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
networking.hostName = "haskell"; # Define your hostname.
|
networking.hostName = "haskell"; # Define your hostname.
|
||||||
|
|
||||||
@@ -46,7 +97,7 @@ in
|
|||||||
# useXkbConfig = true; # use xkb.options in tty.
|
# useXkbConfig = true; # use xkb.options in tty.
|
||||||
# };
|
# };
|
||||||
|
|
||||||
services.udev.packages = [ pkgs.libwacom ];
|
services.udev.packages = with pkgs; [ libwacom rtl-sdr platformio-core.udev ];
|
||||||
|
|
||||||
services.usbmuxd = {
|
services.usbmuxd = {
|
||||||
enable = false;
|
enable = false;
|
||||||
@@ -61,16 +112,19 @@ in
|
|||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
users.users.allen = {
|
users.users.allen = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
extraGroups = [ "wheel" "wireshark" ]; # Enable ‘sudo’ for the user.
|
extraGroups =
|
||||||
shell = pkgs.fish;
|
[ "wheel" "wireshark" "podman" "dialout" ]; # Enable ‘sudo’ for the user.
|
||||||
|
shell = pkgs.nushell;
|
||||||
home = "/home/allen";
|
home = "/home/allen";
|
||||||
packages = with pkgs; [ tree ];
|
packages = with pkgs; [ tree ];
|
||||||
};
|
};
|
||||||
|
|
||||||
users.groups.libvirtd.members = [ "allen" ];
|
users.groups.libvirtd.members = [ "allen" ];
|
||||||
|
users.groups.plugdev.members = [ "allen" ];
|
||||||
|
|
||||||
programs.firefox.enable = true;
|
programs.firefox.enable = true;
|
||||||
programs.wireshark.enable = true;
|
programs.wireshark.enable = true;
|
||||||
|
services.printing.enable = true;
|
||||||
|
|
||||||
# List packages installed in system profile.
|
# List packages installed in system profile.
|
||||||
# You can use https://search.nixos.org/ to find more packages (and options).
|
# You can use https://search.nixos.org/ to find more packages (and options).
|
||||||
@@ -93,19 +147,18 @@ in
|
|||||||
libGL
|
libGL
|
||||||
openal
|
openal
|
||||||
myRizin
|
myRizin
|
||||||
|
libgit2
|
||||||
|
ntfs3g
|
||||||
inputs.helix.packages."${pkgs.system}".helix
|
inputs.helix.packages."${pkgs.system}".helix
|
||||||
];
|
];
|
||||||
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
environment.sessionVariables = {
|
programs.hyprland.enable = true;
|
||||||
LD_LIBRARY_PATH = lib.makeLibraryPath [
|
|
||||||
pkgs.libglvnd
|
environment.variables = {
|
||||||
pkgs.libGL
|
LD_LIBRARY_PATH = lib.makeLibraryPath
|
||||||
pkgs.glfw
|
(with pkgs; [ libglvnd libGL glfw pulseaudio libgit2 ]);
|
||||||
pkgs.pulseaudio
|
|
||||||
pkgs.libgit2
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.variables.EDITOR = "vim";
|
environment.variables.EDITOR = "vim";
|
||||||
|
|||||||
516
flake.lock
generated
516
flake.lock
generated
@@ -1,5 +1,76 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"aquamarine": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762356719,
|
||||||
|
"narHash": "sha256-qwd/xdoOya1m8FENle+4hWnydCtlXUWLAW/Auk6WL7s=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "aquamarine",
|
||||||
|
"rev": "6d0b3567584691bf9d8fedb5d0093309e2f979c7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "aquamarine",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747046372,
|
||||||
|
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"helix": {
|
"helix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
@@ -41,6 +112,331 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprcursor": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1753964049,
|
||||||
|
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprgraphics": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762462052,
|
||||||
|
"narHash": "sha256-6roLYzcDf4V38RUMSqycsOwAnqfodL6BmhRkUtwIgdA=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"rev": "ffc999d980c7b3bca85d3ebd0a9fbadf984a8162",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": "aquamarine",
|
||||||
|
"hyprcursor": "hyprcursor",
|
||||||
|
"hyprgraphics": "hyprgraphics",
|
||||||
|
"hyprland-guiutils": "hyprland-guiutils",
|
||||||
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
|
"hyprlang": "hyprlang",
|
||||||
|
"hyprutils": "hyprutils",
|
||||||
|
"hyprwayland-scanner": "hyprwayland-scanner_2",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
|
"systems": "systems",
|
||||||
|
"xdph": "xdph"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762542520,
|
||||||
|
"narHash": "sha256-hMWWVGEoJRNDaAJxHoL1YL+IXGxdQooEw8lABELVopg=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"rev": "522edc87126a48f3ce4891747b6a92a22385b1e7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-guiutils": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": [
|
||||||
|
"hyprland",
|
||||||
|
"aquamarine"
|
||||||
|
],
|
||||||
|
"hyprgraphics": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprgraphics"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprtoolkit": "hyprtoolkit",
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762465111,
|
||||||
|
"narHash": "sha256-dS13YZdWjgGGLBjpT4FHB6xf8I/WiAU+mgNWXsZgDUs=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-guiutils",
|
||||||
|
"rev": "a415eba866a953f3096d661318f771aa0082eb98",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-guiutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-protocols": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1759610243,
|
||||||
|
"narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1758927902,
|
||||||
|
"narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprtoolkit": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"aquamarine"
|
||||||
|
],
|
||||||
|
"hyprgraphics": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprgraphics"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762463729,
|
||||||
|
"narHash": "sha256-2fYkU/mdz8WKY3dkDPlE/j6hTxIwqultsx4gMMsMns0=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprtoolkit",
|
||||||
|
"rev": "88483bdee5329ec985f0c8f834c519cd18cfe532",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprtoolkit",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprutils": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762387740,
|
||||||
|
"narHash": "sha256-gQ9zJ+pUI4o+Gh4Z6jhJll7jjCSwi8ZqJIhCE2oqwhQ=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"rev": "926689ddb9c0a8787e58c02c765a62e32d63d1f7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprwayland-scanner": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprtoolkit",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprtoolkit",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755184602,
|
||||||
|
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprwayland-scanner_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755184602,
|
||||||
|
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwayland-scanner",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-filter": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1693833173,
|
||||||
|
"narHash": "sha256-hlMABKrGbEiJD5dwUSfnw1CQ3bG7KKwDV+Nx3bEZd7U=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "nix-filter",
|
||||||
|
"rev": "ac030bd9ba98e318e1f4c4328d60766ade8ebe8b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "nix-filter",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1740560979,
|
"lastModified": 1740560979,
|
||||||
@@ -58,6 +454,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762363567,
|
||||||
|
"narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748889542,
|
"lastModified": 1748889542,
|
||||||
"narHash": "sha256-Hb4iMhIbjX45GcrgOp3b8xnyli+ysRPqAgZ/LZgyT5k=",
|
"narHash": "sha256-Hb4iMhIbjX45GcrgOp3b8xnyli+ysRPqAgZ/LZgyT5k=",
|
||||||
@@ -73,11 +485,36 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pre-commit-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762441963,
|
||||||
|
"narHash": "sha256-j+rNQ119ffYUkYt2YYS6rnd6Jh/crMZmbqpkGLXaEt0=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "8e7576e79b88c16d7ee3bbd112c8d90070832885",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"helix": "helix",
|
"helix": "helix",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"hyprland": "hyprland",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"split-monitor-workspaces": "split-monitor-workspaces"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
@@ -100,6 +537,83 @@
|
|||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"split-monitor-workspaces": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland": [
|
||||||
|
"hyprland"
|
||||||
|
],
|
||||||
|
"nix-filter": "nix-filter"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1759855608,
|
||||||
|
"narHash": "sha256-DO6OaOY8G4HFP7Rz6gRCG6K2PZ8NrXkDIF6NJGRVcbs=",
|
||||||
|
"owner": "Duckonaut",
|
||||||
|
"repo": "split-monitor-workspaces",
|
||||||
|
"rev": "10719e725ade06da410db52268f4b9cf8ea5f63c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Duckonaut",
|
||||||
|
"repo": "split-monitor-workspaces",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xdph": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-protocols": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-protocols"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1761431178,
|
||||||
|
"narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"rev": "4b8801228ff958d028f588f0c2b911dbf32297f9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
48
flake.nix
48
flake.nix
@@ -8,22 +8,40 @@
|
|||||||
url = "github:nix-community/home-manager/release-25.05";
|
url = "github:nix-community/home-manager/release-25.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs, home-manager, ... }@inputs: {
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
nixosConfigurations.haskell = nixpkgs.lib.nixosSystem {
|
split-monitor-workspaces = {
|
||||||
system = "x86_64-linux";
|
url = "github:Duckonaut/split-monitor-workspaces";
|
||||||
specialArgs = { inherit inputs; };
|
inputs.hyprland.follows = "hyprland";
|
||||||
modules = [
|
|
||||||
./configuration.nix
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
|
|
||||||
home-manager.users.allen = import ./home.nix;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ self, nixpkgs, home-manager, split-monitor-workspaces, ... }@inputs:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config = { allowUnfree = true; };
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
nixosConfigurations.haskell = nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
|
modules = [
|
||||||
|
./configuration.nix
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
|
||||||
|
home-manager.users.allen = import ./home.nix {
|
||||||
|
inherit split-monitor-workspaces;
|
||||||
|
inherit pkgs;
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,14 +9,20 @@
|
|||||||
boot.initrd.availableKernelModules =
|
boot.initrd.availableKernelModules =
|
||||||
[ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "uas" "sd_mod" ];
|
[ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "uas" "sd_mod" ];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelParams = [ "intel_iommu=on" ];
|
boot.kernelParams =
|
||||||
|
[ "intel_iommu=on" "modprobe.blacklist=dvb_usb_rtl28xxu" ];
|
||||||
boot.kernelModules = [ "kvm-intel" "vfio_pci" ];
|
boot.kernelModules = [ "kvm-intel" "vfio_pci" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
# 1050 passthrough
|
# 1050 passthrough
|
||||||
# boot.extraModprobeConfig = ''
|
boot.extraModprobeConfig = ""
|
||||||
# options vfio-pci ids=10de:1c81,10de:0fb9
|
# + "options vfio-pci ids=10de:1c81,10de:0fb9\n"
|
||||||
# '';
|
+ ''
|
||||||
|
options hid_apple fnmode=2
|
||||||
|
'';
|
||||||
|
# hid_apple -> remove AK68 keyboard F1-F12 not pressing issue
|
||||||
|
|
||||||
|
boot.kernel.sysctl = { "hid_apple.fnmode" = 2; };
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
device = "/dev/disk/by-uuid/4e08142c-1b09-4265-a497-822e4a83d4c8";
|
device = "/dev/disk/by-uuid/4e08142c-1b09-4265-a497-822e4a83d4c8";
|
||||||
@@ -24,6 +30,12 @@
|
|||||||
options = [ "subvol=root" ];
|
options = [ "subvol=root" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/x" = {
|
||||||
|
device = "tmpfs";
|
||||||
|
fsType = "tmpfs";
|
||||||
|
options = [ "size=8G" "mode=1777" ];
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/home" = {
|
fileSystems."/home" = {
|
||||||
device = "/dev/disk/by-uuid/4e08142c-1b09-4265-a497-822e4a83d4c8";
|
device = "/dev/disk/by-uuid/4e08142c-1b09-4265-a497-822e4a83d4c8";
|
||||||
fsType = "btrfs";
|
fsType = "btrfs";
|
||||||
@@ -36,16 +48,22 @@
|
|||||||
options = [ "subvol=nix" ];
|
options = [ "subvol=nix" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot/efi" = {
|
||||||
device = "/dev/disk/by-uuid/E808-5876";
|
device = "/dev/disk/by-uuid/E808-5876";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [ "fmask=0022" "dmask=0022" ];
|
options = [ "fmask=0022" "dmask=0022" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/mnt/hdd1" = {
|
# fileSystems."/mnt/hdd1" = {
|
||||||
device = "/dev/disk/by-uuid/EC40940C4093DC20";
|
# device = "/dev/disk/by-uuid/EC40940C4093DC20";
|
||||||
fsType = "ntfs-3g";
|
# fsType = "ntfs-3g";
|
||||||
options = [ "rw" "uid=1000" "umask=0022" ];
|
# options = [ "rw" "uid=1000" "umask=0022" "noauto" ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
fileSystems."/mnt/ssd1" = {
|
||||||
|
device = "/dev/disk/by-uuid/4e1710bb-2cc9-41c3-909c-34f24bd1f63e";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "defaults" "ssd" "noatime" "noauto" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|||||||
26
home.nix
26
home.nix
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, ... }:
|
{ inputs, split-monitor-workspaces, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
./modules/home/starship.nix
|
./modules/home/starship.nix
|
||||||
./modules/home/alacritty.nix
|
./modules/home/alacritty.nix
|
||||||
./modules/home/bash.nix
|
./modules/home/bash.nix
|
||||||
|
./modules/home/nushell.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.username = "allen";
|
home.username = "allen";
|
||||||
@@ -28,11 +29,32 @@
|
|||||||
tools = import ./pkgs/tools.nix { inherit pkgs; };
|
tools = import ./pkgs/tools.nix { inherit pkgs; };
|
||||||
util = import ./pkgs/util.nix { inherit pkgs; };
|
util = import ./pkgs/util.nix { inherit pkgs; };
|
||||||
games = import ./pkgs/games.nix { inherit pkgs; };
|
games = import ./pkgs/games.nix { inherit pkgs; };
|
||||||
|
unstable = import (builtins.fetchTarball {
|
||||||
|
url = "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz";
|
||||||
|
sha256 = "1ijgd8hy1ii0k0s48yhnzw09c7zdjnp1fq8wfj7jgajwmlfwy3xg";
|
||||||
|
}) { system = "x86_64-linux"; };
|
||||||
|
unstables = import ./pkgs/unstable.nix {
|
||||||
|
inherit pkgs;
|
||||||
|
inherit unstable;
|
||||||
|
};
|
||||||
|
|
||||||
in fonts ++ minecraft ++ misc ++ network ++ programming ++ tools ++ util
|
in fonts ++ minecraft ++ misc ++ network ++ programming ++ tools ++ util
|
||||||
++ games;
|
++ games ++ unstables;
|
||||||
|
|
||||||
programs.direnv.enable = true;
|
programs.direnv.enable = true;
|
||||||
programs.direnv.nix-direnv.enable = true;
|
programs.direnv.nix-direnv.enable = true;
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||||
|
plugins = [
|
||||||
|
split-monitor-workspaces.packages.x86_64-linux.split-monitor-workspaces
|
||||||
|
];
|
||||||
|
extraConfig = ''
|
||||||
|
source = ~/.config/hypr/hyprland-custom.conf
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
home.stateVersion = "25.05";
|
home.stateVersion = "25.05";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
};
|
};
|
||||||
scrolling.multiplier = 5;
|
scrolling.multiplier = 5;
|
||||||
selection.save_to_clipboard = true;
|
selection.save_to_clipboard = true;
|
||||||
|
colors = { primary = { background = "#040404"; }; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,12 @@
|
|||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
|
imports = [ ./fish/aliases.nix ./fish/config.nix ];
|
||||||
|
|
||||||
|
home.file.".config/fish/completions/flux.fish".source =
|
||||||
|
../../shell/completions/flux.fish;
|
||||||
|
home.file.".config/fish/kube.fish".source = ../../shell/kube.fish;
|
||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellInit = ''
|
|
||||||
set -gx EDITOR nvim
|
|
||||||
set -gx PNPM_HOME $HOME/.local/share/pnpm
|
|
||||||
fish_add_path $PNPM_HOME
|
|
||||||
fish_add_path $HOME/.local/bin
|
|
||||||
set -gx OPENSSL_DIR ${pkgs.openssl.dev};
|
|
||||||
set -gx KUBECONFIG $HOME/.kube/config;
|
|
||||||
set -gx OPENSSL_LIB_DIR ${pkgs.openssl.out}/lib;
|
|
||||||
set -gx OPENSSL_INCLUDE_DIR ${pkgs.openssl.dev}/include;
|
|
||||||
set -gx PKG_CONFIG_PATH ${pkgs.openssl.dev}/lib/pkgconfig;
|
|
||||||
alias vi="nvim"
|
|
||||||
alias rb="sudo nixos-rebuild switch --flake ~/nixos-config#"
|
|
||||||
alias dry-rb="sudo nixos-rebuild dry-build --flake ~/nixos-config#"
|
|
||||||
'';
|
|
||||||
plugins = [
|
plugins = [
|
||||||
# Enable a plugin (here grc for colorized command output) from nixpkgs
|
# Enable a plugin (here grc for colorized command output) from nixpkgs
|
||||||
{
|
{
|
||||||
@@ -34,3 +26,4 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
15
modules/home/fish/aliases.nix
Normal file
15
modules/home/fish/aliases.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
programs.fish.shellAliases = {
|
||||||
|
v = "nvim";
|
||||||
|
c = "clear";
|
||||||
|
rb = "sudo nixos-rebuild switch --flake ~/nixos-config#";
|
||||||
|
"boot-rb" = "sudo nixos-rebuild --install-bootloader boot --flake ~/nixos-config#";
|
||||||
|
clc = "cloc . --exclude-dir=target,node_modules,.venv --exclude-ext=yml,yaml,csv -v";
|
||||||
|
"dry-rb" = "sudo nixos-rebuild dry-build --flake ~/nixos-config#";
|
||||||
|
devim = "NVIM_APPNAME=nvim-dev nvim";
|
||||||
|
win = "grub-reboot 'Windows Boot Manager (on /dev/sda2)' && reboot";
|
||||||
|
qwer = "reboot";
|
||||||
|
zxcv = "shutdown now";
|
||||||
|
lg = "lazygit";
|
||||||
|
};
|
||||||
|
}
|
||||||
1
modules/home/fish/config.nix
Normal file
1
modules/home/fish/config.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{ config, ... }: { imports = [ ./env.nix ./functions.nix ]; }
|
||||||
13
modules/home/fish/env.nix
Normal file
13
modules/home/fish/env.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{ config, ... }: {
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
PNPM_HOME = "${config.home.homeDirectory}/.local/share/pnpm";
|
||||||
|
KUBECONFIG = "${config.home.homeDirectory}/.kube/config";
|
||||||
|
# OPENSSL_DIR = "${pkgs.openssl.dev}";
|
||||||
|
#OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib";
|
||||||
|
# OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include";
|
||||||
|
# PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
|
||||||
|
NIX_DEV_SHELL_DEFAULT_SHELL = "(which nu)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
20
modules/home/fish/functions.nix
Normal file
20
modules/home/fish/functions.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
programs.fish.functions = {
|
||||||
|
mkcd = {
|
||||||
|
body = ''
|
||||||
|
if test (count $argv) -eq 0
|
||||||
|
echo "Usage: mkcd <directory>"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
mkdir -p $argv[1]
|
||||||
|
and cd $argv[1]
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.fish.interactiveShellInit = ''
|
||||||
|
if test -f $HOME/.config/fish/kube.fish
|
||||||
|
source $HOME/.config/fish/kube.fish
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
credential.credentialStore = "store";
|
credential.credentialStore = "store";
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
core.editor = "nvim";
|
core.editor = "nvim";
|
||||||
|
push.autoSetupRemote = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
42
modules/home/nushell.nix
Normal file
42
modules/home/nushell.nix
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{ config, ... }: {
|
||||||
|
imports = [ ./fish/env.nix ];
|
||||||
|
|
||||||
|
home.file.".config/nushell/nu".source = ../../shell/nu;
|
||||||
|
programs = {
|
||||||
|
nushell = {
|
||||||
|
enable = true;
|
||||||
|
shellAliases = { vi = "nvim"; };
|
||||||
|
environmentVariables =
|
||||||
|
let env = import ./fish/env.nix { inherit config; };
|
||||||
|
in env.home.sessionVariables;
|
||||||
|
extraConfig = ''
|
||||||
|
source ~/.config/nushell/nu/config.nu
|
||||||
|
let carapace_completer = {|spans|
|
||||||
|
carapace $spans.0 nushell ...$spans | from json
|
||||||
|
}
|
||||||
|
$env.config = {
|
||||||
|
show_banner: false,
|
||||||
|
completions: {
|
||||||
|
case_sensitive: false # case-sensitive completions
|
||||||
|
quick: true # set to false to prevent auto-selecting completions
|
||||||
|
partial: true # set to false to prevent partial filling of the prompt
|
||||||
|
algorithm: "fuzzy" # prefix or fuzzy
|
||||||
|
external: {
|
||||||
|
# set to false to prevent nushell looking into $env.PATH to find more suggestions
|
||||||
|
enable: true
|
||||||
|
# set to lower can improve completion performance at the cost of omitting some options
|
||||||
|
max_results: 100
|
||||||
|
completer: $carapace_completer # check 'carapace_completer'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$env.PATH = ($env.PATH |
|
||||||
|
split row (char esep) |
|
||||||
|
append /usr/bin/env | append $"($env.HOME)/.local/share/pnpm"
|
||||||
|
)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
carapace.enable = true;
|
||||||
|
carapace.enableNushellIntegration = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -18,6 +18,7 @@ with pkgs; [
|
|||||||
zlib.dev
|
zlib.dev
|
||||||
gdk-pixbuf
|
gdk-pixbuf
|
||||||
glib
|
glib
|
||||||
|
#glibc
|
||||||
gtk3
|
gtk3
|
||||||
icu
|
icu
|
||||||
wayland
|
wayland
|
||||||
@@ -43,7 +44,6 @@ with pkgs; [
|
|||||||
openssl
|
openssl
|
||||||
pango
|
pango
|
||||||
pipewire
|
pipewire
|
||||||
stdenv.cc.cc
|
|
||||||
systemd
|
systemd
|
||||||
vulkan-loader
|
vulkan-loader
|
||||||
xorg.libX11
|
xorg.libX11
|
||||||
@@ -64,4 +64,6 @@ with pkgs; [
|
|||||||
zlib.dev
|
zlib.dev
|
||||||
pkg-config
|
pkg-config
|
||||||
haskellPackages.zlib
|
haskellPackages.zlib
|
||||||
|
stdenv.cc.cc
|
||||||
|
imagemagick
|
||||||
]
|
]
|
||||||
|
|||||||
31
nixpkgs/blockbench-5.nix
Normal file
31
nixpkgs/blockbench-5.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{ pkgs ? import <nixpkgs> { } }:
|
||||||
|
with pkgs;
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "blockbench";
|
||||||
|
version = "5.0.2";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url =
|
||||||
|
"https://github.com/JannisX11/blockbench/releases/download/v${version}/Blockbench_${version}.AppImage";
|
||||||
|
sha256 = "e4e1edc6df725c54a675e201f3366c4245f36b6f558bf9b68b0f66f00e360b58";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
unpackPhase = "true"; # AppImage, we won’t unpack fully
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp ${src} $out/bin/blockbench
|
||||||
|
chmod +x $out/bin/blockbench
|
||||||
|
wrapProgram $out/bin/blockbench \
|
||||||
|
--prefix PATH : "${pkgs.nodejs}/bin" \
|
||||||
|
--set BLOCKBENCH_APPIMAGE "$out/bin/blockbench"
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Blockbench 3D model editor (low-poly / Minecraft style)";
|
||||||
|
homepage = "https://blockbench.net/";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,24 +4,32 @@
|
|||||||
|
|
||||||
with pkgs; [
|
with pkgs; [
|
||||||
radare2
|
radare2
|
||||||
(python3.withPackages (python-pkgs: with python-pkgs; [ jupyter-client ]))
|
# (python3.withPackages (python-pkgs: with python-pkgs; [ jupyter-client ]))
|
||||||
# gdb
|
# gdb
|
||||||
|
zap
|
||||||
lldb
|
lldb
|
||||||
|
clang-tools
|
||||||
tokio-console
|
tokio-console
|
||||||
iaito
|
deno
|
||||||
|
#iaito
|
||||||
|
clang
|
||||||
|
valgrind
|
||||||
ghidra-bin
|
ghidra-bin
|
||||||
|
protobuf
|
||||||
|
buf
|
||||||
uv
|
uv
|
||||||
unityhub
|
unityhub
|
||||||
|
gh
|
||||||
|
platformio
|
||||||
python313Packages.r2pipe
|
python313Packages.r2pipe
|
||||||
python312Packages.r2pipe
|
(python313.withPackages(ps: with ps; [ jupyter-client pynvim wand ipykernel ]))
|
||||||
python312Packages.pip
|
python313Packages.pip
|
||||||
nodejs
|
nodejs
|
||||||
go
|
go
|
||||||
ninja
|
ninja
|
||||||
binwalk
|
binwalk
|
||||||
dotnet-sdk_9
|
dotnet-sdk_9
|
||||||
csharp-ls
|
csharp-ls
|
||||||
gcc
|
|
||||||
cmake
|
cmake
|
||||||
gnumake
|
gnumake
|
||||||
graalvmPackages.graalvm-ce
|
graalvmPackages.graalvm-ce
|
||||||
@@ -49,4 +57,7 @@ with pkgs; [
|
|||||||
haskellPackages.zlib
|
haskellPackages.zlib
|
||||||
bpf-linker
|
bpf-linker
|
||||||
zlib.dev
|
zlib.dev
|
||||||
|
conan
|
||||||
|
lld
|
||||||
|
libllvm
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ with pkgs; [
|
|||||||
zathura
|
zathura
|
||||||
google-chrome
|
google-chrome
|
||||||
speed-cloudflare-cli
|
speed-cloudflare-cli
|
||||||
|
ansible
|
||||||
|
vagrant
|
||||||
gqrx
|
gqrx
|
||||||
libreoffice
|
libreoffice
|
||||||
act
|
act
|
||||||
@@ -26,6 +28,7 @@ with pkgs; [
|
|||||||
win2xcur
|
win2xcur
|
||||||
waypaper
|
waypaper
|
||||||
swww
|
swww
|
||||||
|
sdrpp
|
||||||
rofi-wayland
|
rofi-wayland
|
||||||
hyprshot
|
hyprshot
|
||||||
vesktop
|
vesktop
|
||||||
@@ -38,7 +41,6 @@ with pkgs; [
|
|||||||
yt-dlp
|
yt-dlp
|
||||||
stellarium
|
stellarium
|
||||||
blender
|
blender
|
||||||
blockbench
|
|
||||||
jetbrains.idea-ultimate
|
jetbrains.idea-ultimate
|
||||||
krita
|
krita
|
||||||
barrier
|
barrier
|
||||||
@@ -48,4 +50,9 @@ with pkgs; [
|
|||||||
texlive.combined.scheme-full
|
texlive.combined.scheme-full
|
||||||
hugo
|
hugo
|
||||||
glow
|
glow
|
||||||
|
blockbench
|
||||||
|
xmonad-with-packages
|
||||||
|
pureref
|
||||||
|
freerdp
|
||||||
|
prusa-slicer
|
||||||
]
|
]
|
||||||
|
|||||||
6
pkgs/unstable.nix
Normal file
6
pkgs/unstable.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# things in the nixos unstable registry
|
||||||
|
|
||||||
|
{ pkgs, unstable, ... }:
|
||||||
|
|
||||||
|
with pkgs;
|
||||||
|
[ ]
|
||||||
@@ -5,19 +5,35 @@
|
|||||||
with pkgs; [
|
with pkgs; [
|
||||||
neofetch
|
neofetch
|
||||||
nnn # terminal file manager
|
nnn # terminal file manager
|
||||||
|
nushell
|
||||||
|
|
||||||
# archives
|
# archives
|
||||||
zip
|
zip
|
||||||
|
tre-command
|
||||||
xz
|
xz
|
||||||
|
rtl-sdr
|
||||||
|
hyprpicker
|
||||||
|
grub2
|
||||||
zlib
|
zlib
|
||||||
|
masscan
|
||||||
unzip
|
unzip
|
||||||
p7zip
|
p7zip
|
||||||
|
fd
|
||||||
|
|
||||||
|
# k8s
|
||||||
|
kubectx
|
||||||
|
k9s
|
||||||
|
lens
|
||||||
|
fluxcd
|
||||||
|
kubescape
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
xclip
|
xclip
|
||||||
openssl
|
openssl
|
||||||
ffmpeg
|
ffmpeg
|
||||||
|
reptyr
|
||||||
cloc
|
cloc
|
||||||
|
protocol
|
||||||
piper-tts
|
piper-tts
|
||||||
pavucontrol
|
pavucontrol
|
||||||
ripgrep
|
ripgrep
|
||||||
@@ -55,6 +71,20 @@ with pkgs; [
|
|||||||
bridge-utils
|
bridge-utils
|
||||||
|
|
||||||
cudaPackages.cudatoolkit
|
cudaPackages.cudatoolkit
|
||||||
airspy
|
|
||||||
airspyhf
|
airspyhf
|
||||||
|
pstree
|
||||||
|
gptfdisk
|
||||||
|
nix-search
|
||||||
|
just
|
||||||
|
adr-tools
|
||||||
|
xmobar
|
||||||
|
mosquitto
|
||||||
|
universal-ctags
|
||||||
|
smartmontools
|
||||||
|
partclone
|
||||||
|
ncdu
|
||||||
|
dua
|
||||||
|
pv
|
||||||
|
squashfsTools
|
||||||
|
kubernetes-helm
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
{ inputs, pkgs, ... }: { programs.hyprland = { enable = true; }; }
|
|
||||||
18
services/timer.nix
Normal file
18
services/timer.nix
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{ config, pkgs, ... }: {
|
||||||
|
# systemd.services.auto-shutdown = {
|
||||||
|
# description = "Automatic daily shutdown at 9:30 pm";
|
||||||
|
# serviceConfig = {
|
||||||
|
# Type = "oneshot";
|
||||||
|
# ExecStart = [ "${pkgs.systemd}/bin/systemctl poweroff" ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
# systemd.timers.auto-shutdown = {
|
||||||
|
# description = "Timer for daily shutdown at 9:30 pm";
|
||||||
|
# wantedBy = [ "timers.target" ];
|
||||||
|
# timerConfig = {
|
||||||
|
# OnCalendar = "21:40";
|
||||||
|
# Persistent = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
podman = {
|
podman = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dockerCompat = true;
|
dockerCompat = true;
|
||||||
|
dockerSocket.enable = true;
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
defaultNetwork.settings.dns_enabled = true;
|
||||||
};
|
};
|
||||||
libvirtd.enable = true;
|
libvirtd.enable = true;
|
||||||
@@ -13,11 +14,5 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
programs.virt-manager.enable = true;
|
programs.virt-manager.enable = true;
|
||||||
|
virtualisation.virtualbox.host.enable = true;
|
||||||
services.k3s = {
|
|
||||||
enable = true;
|
|
||||||
clusterInit = true;
|
|
||||||
extraFlags =
|
|
||||||
"--cluster-cidr=10.42.0.0/16,2a10:3781:25ac:2::/64 --service-cidr=10.43.0.0/16,2a10:3781:25ac:3::/112 --flannel-iface enp5s0";
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,16 @@
|
|||||||
hardware.nvidia.open = false;
|
hardware.nvidia.open = false;
|
||||||
|
|
||||||
services.xserver.displayManager.gdm.enable = true;
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
|
# services.xserver.displayManager.sddm.enable = true;
|
||||||
|
|
||||||
services.xserver.desktopManager.gnome.enable = true;
|
services.xserver.desktopManager.gnome.enable = true;
|
||||||
services.xserver.xkb.layout = "us";
|
services.xserver.xkb.layout = "us";
|
||||||
|
|
||||||
|
services.picom.enable = true;
|
||||||
|
|
||||||
|
services.xserver.windowManager.xmonad = {
|
||||||
|
enable = true;
|
||||||
|
enableContribAndExtras = true;
|
||||||
|
config = builtins.readFile ./xmonad.hs;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
9
services/xmonad.hs
Normal file
9
services/xmonad.hs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import XMonad
|
||||||
|
|
||||||
|
main =
|
||||||
|
xmonad
|
||||||
|
def
|
||||||
|
{ terminal = "alacritty"
|
||||||
|
, modMask = mod4Mask
|
||||||
|
, borderWidth = 3
|
||||||
|
}
|
||||||
235
shell/completions/flux.fish
Normal file
235
shell/completions/flux.fish
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
# fish completion for flux -*- shell-script -*-
|
||||||
|
|
||||||
|
function __flux_debug
|
||||||
|
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||||
|
if test -n "$file"
|
||||||
|
echo "$argv" >> $file
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function __flux_perform_completion
|
||||||
|
__flux_debug "Starting __flux_perform_completion"
|
||||||
|
|
||||||
|
# Extract all args except the last one
|
||||||
|
set -l args (commandline -opc)
|
||||||
|
# Extract the last arg and escape it in case it is a space
|
||||||
|
set -l lastArg (string escape -- (commandline -ct))
|
||||||
|
|
||||||
|
__flux_debug "args: $args"
|
||||||
|
__flux_debug "last arg: $lastArg"
|
||||||
|
|
||||||
|
# Disable ActiveHelp which is not supported for fish shell
|
||||||
|
set -l requestComp "FLUX_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
|
||||||
|
|
||||||
|
__flux_debug "Calling $requestComp"
|
||||||
|
set -l results (eval $requestComp 2> /dev/null)
|
||||||
|
|
||||||
|
# Some programs may output extra empty lines after the directive.
|
||||||
|
# Let's ignore them or else it will break completion.
|
||||||
|
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||||
|
for line in $results[-1..1]
|
||||||
|
if test (string trim -- $line) = ""
|
||||||
|
# Found an empty line, remove it
|
||||||
|
set results $results[1..-2]
|
||||||
|
else
|
||||||
|
# Found non-empty line, we have our proper output
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l comps $results[1..-2]
|
||||||
|
set -l directiveLine $results[-1]
|
||||||
|
|
||||||
|
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||||
|
# completions must be prefixed with the flag
|
||||||
|
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||||
|
|
||||||
|
__flux_debug "Comps: $comps"
|
||||||
|
__flux_debug "DirectiveLine: $directiveLine"
|
||||||
|
__flux_debug "flagPrefix: $flagPrefix"
|
||||||
|
|
||||||
|
for comp in $comps
|
||||||
|
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||||
|
end
|
||||||
|
|
||||||
|
printf "%s\n" "$directiveLine"
|
||||||
|
end
|
||||||
|
|
||||||
|
# this function limits calls to __flux_perform_completion, by caching the result behind $__flux_perform_completion_once_result
|
||||||
|
function __flux_perform_completion_once
|
||||||
|
__flux_debug "Starting __flux_perform_completion_once"
|
||||||
|
|
||||||
|
if test -n "$__flux_perform_completion_once_result"
|
||||||
|
__flux_debug "Seems like a valid result already exists, skipping __flux_perform_completion"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
set --global __flux_perform_completion_once_result (__flux_perform_completion)
|
||||||
|
if test -z "$__flux_perform_completion_once_result"
|
||||||
|
__flux_debug "No completions, probably due to a failure"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
__flux_debug "Performed completions and set __flux_perform_completion_once_result"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# this function is used to clear the $__flux_perform_completion_once_result variable after completions are run
|
||||||
|
function __flux_clear_perform_completion_once_result
|
||||||
|
__flux_debug ""
|
||||||
|
__flux_debug "========= clearing previously set __flux_perform_completion_once_result variable =========="
|
||||||
|
set --erase __flux_perform_completion_once_result
|
||||||
|
__flux_debug "Successfully erased the variable __flux_perform_completion_once_result"
|
||||||
|
end
|
||||||
|
|
||||||
|
function __flux_requires_order_preservation
|
||||||
|
__flux_debug ""
|
||||||
|
__flux_debug "========= checking if order preservation is required =========="
|
||||||
|
|
||||||
|
__flux_perform_completion_once
|
||||||
|
if test -z "$__flux_perform_completion_once_result"
|
||||||
|
__flux_debug "Error determining if order preservation is required"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l directive (string sub --start 2 $__flux_perform_completion_once_result[-1])
|
||||||
|
__flux_debug "Directive is: $directive"
|
||||||
|
|
||||||
|
set -l shellCompDirectiveKeepOrder 32
|
||||||
|
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
|
||||||
|
__flux_debug "Keeporder is: $keeporder"
|
||||||
|
|
||||||
|
if test $keeporder -ne 0
|
||||||
|
__flux_debug "This does require order preservation"
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
__flux_debug "This doesn't require order preservation"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# This function does two things:
|
||||||
|
# - Obtain the completions and store them in the global __flux_comp_results
|
||||||
|
# - Return false if file completion should be performed
|
||||||
|
function __flux_prepare_completions
|
||||||
|
__flux_debug ""
|
||||||
|
__flux_debug "========= starting completion logic =========="
|
||||||
|
|
||||||
|
# Start fresh
|
||||||
|
set --erase __flux_comp_results
|
||||||
|
|
||||||
|
__flux_perform_completion_once
|
||||||
|
__flux_debug "Completion results: $__flux_perform_completion_once_result"
|
||||||
|
|
||||||
|
if test -z "$__flux_perform_completion_once_result"
|
||||||
|
__flux_debug "No completion, probably due to a failure"
|
||||||
|
# Might as well do file completion, in case it helps
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l directive (string sub --start 2 $__flux_perform_completion_once_result[-1])
|
||||||
|
set --global __flux_comp_results $__flux_perform_completion_once_result[1..-2]
|
||||||
|
|
||||||
|
__flux_debug "Completions are: $__flux_comp_results"
|
||||||
|
__flux_debug "Directive is: $directive"
|
||||||
|
|
||||||
|
set -l shellCompDirectiveError 1
|
||||||
|
set -l shellCompDirectiveNoSpace 2
|
||||||
|
set -l shellCompDirectiveNoFileComp 4
|
||||||
|
set -l shellCompDirectiveFilterFileExt 8
|
||||||
|
set -l shellCompDirectiveFilterDirs 16
|
||||||
|
|
||||||
|
if test -z "$directive"
|
||||||
|
set directive 0
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||||
|
if test $compErr -eq 1
|
||||||
|
__flux_debug "Received error directive: aborting."
|
||||||
|
# Might as well do file completion, in case it helps
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||||
|
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||||
|
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||||
|
__flux_debug "File extension filtering or directory filtering not supported"
|
||||||
|
# Do full file completion instead
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||||
|
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||||
|
|
||||||
|
__flux_debug "nospace: $nospace, nofiles: $nofiles"
|
||||||
|
|
||||||
|
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||||
|
# we need to count the number of valid completions.
|
||||||
|
# To do so, we will filter on prefix as the completions we have received
|
||||||
|
# may not already be filtered so as to allow fish to match on different
|
||||||
|
# criteria than the prefix.
|
||||||
|
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||||
|
set -l prefix (commandline -t | string escape --style=regex)
|
||||||
|
__flux_debug "prefix: $prefix"
|
||||||
|
|
||||||
|
set -l completions (string match -r -- "^$prefix.*" $__flux_comp_results)
|
||||||
|
set --global __flux_comp_results $completions
|
||||||
|
__flux_debug "Filtered completions are: $__flux_comp_results"
|
||||||
|
|
||||||
|
# Important not to quote the variable for count to work
|
||||||
|
set -l numComps (count $__flux_comp_results)
|
||||||
|
__flux_debug "numComps: $numComps"
|
||||||
|
|
||||||
|
if test $numComps -eq 1; and test $nospace -ne 0
|
||||||
|
# We must first split on \t to get rid of the descriptions to be
|
||||||
|
# able to check what the actual completion will be.
|
||||||
|
# We don't need descriptions anyway since there is only a single
|
||||||
|
# real completion which the shell will expand immediately.
|
||||||
|
set -l split (string split --max 1 \t $__flux_comp_results[1])
|
||||||
|
|
||||||
|
# Fish won't add a space if the completion ends with any
|
||||||
|
# of the following characters: @=/:.,
|
||||||
|
set -l lastChar (string sub -s -1 -- $split)
|
||||||
|
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||||
|
# In other cases, to support the "nospace" directive we trick the shell
|
||||||
|
# by outputting an extra, longer completion.
|
||||||
|
__flux_debug "Adding second completion to perform nospace directive"
|
||||||
|
set --global __flux_comp_results $split[1] $split[1].
|
||||||
|
__flux_debug "Completions are now: $__flux_comp_results"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||||
|
# To be consistent with bash and zsh, we only trigger file
|
||||||
|
# completion when there are no other completions
|
||||||
|
__flux_debug "Requesting file completion"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||||
|
# so we can properly delete any completions provided by another script.
|
||||||
|
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||||
|
# the existing completions will only be loaded if the program can be found.
|
||||||
|
if type -q "flux"
|
||||||
|
# The space after the program name is essential to trigger completion for the program
|
||||||
|
# and not completion of the program name itself.
|
||||||
|
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||||
|
complete --do-complete "flux " > /dev/null 2>&1
|
||||||
|
end
|
||||||
|
|
||||||
|
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||||
|
complete -c flux -e
|
||||||
|
|
||||||
|
# this will get called after the two calls below and clear the $__flux_perform_completion_once_result global
|
||||||
|
complete -c flux -n '__flux_clear_perform_completion_once_result'
|
||||||
|
# The call to __flux_prepare_completions will setup __flux_comp_results
|
||||||
|
# which provides the program's completion choices.
|
||||||
|
# If this doesn't require order preservation, we don't use the -k flag
|
||||||
|
complete -c flux -n 'not __flux_requires_order_preservation && __flux_prepare_completions' -f -a '$__flux_comp_results'
|
||||||
|
# otherwise we use the -k flag
|
||||||
|
complete -k -c flux -n '__flux_requires_order_preservation && __flux_prepare_completions' -f -a '$__flux_comp_results'
|
||||||
119
shell/kube.fish
Normal file
119
shell/kube.fish
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
alias kn="kubens"
|
||||||
|
|
||||||
|
# other
|
||||||
|
alias k='kubectl'
|
||||||
|
alias kl='kubectl logs'
|
||||||
|
alias kexec='kubectl exec -it'
|
||||||
|
alias kpf='kubectl port-forward'
|
||||||
|
alias kaci='kubectl auth can-i'
|
||||||
|
alias kat='kubectl attach'
|
||||||
|
alias kapir='kubectl api-resources'
|
||||||
|
alias kapiv='kubectl api-versions'
|
||||||
|
|
||||||
|
# get
|
||||||
|
alias kg='kubectl get'
|
||||||
|
alias kgns='kubectl get ns'
|
||||||
|
alias kgp='kubectl get pods'
|
||||||
|
alias kgs='kubectl get secrets'
|
||||||
|
alias kgd='kubectl get deploy'
|
||||||
|
alias kgrs='kubectl get rs'
|
||||||
|
alias kgss='kubectl get sts'
|
||||||
|
alias kgds='kubectl get ds'
|
||||||
|
alias kgcm='kubectl get configmap'
|
||||||
|
alias kgcj='kubectl get cronjob'
|
||||||
|
alias kgj='kubectl get job'
|
||||||
|
alias kgsvc='kubectl get svc -o wide'
|
||||||
|
alias kgn='kubectl get no -o wide'
|
||||||
|
alias kgr='kubectl get roles'
|
||||||
|
alias kgrb='kubectl get rolebindings'
|
||||||
|
alias kgcr='kubectl get clusterroles'
|
||||||
|
alias kgrb='kubectl get clusterrolebindings'
|
||||||
|
alias kgsa='kubectl get sa'
|
||||||
|
alias kgnp='kubectl get netpol'
|
||||||
|
|
||||||
|
# edit
|
||||||
|
alias ke='kubectl edit'
|
||||||
|
alias kens='kubectl edit ns'
|
||||||
|
alias kes='kubectl edit secrets'
|
||||||
|
alias ked='kubectl edit deploy'
|
||||||
|
alias kers='kubectl edit rs'
|
||||||
|
alias kess='kubectl edit sts'
|
||||||
|
alias keds='kubectl edit ds'
|
||||||
|
alias kesvc='kubectl edit svc'
|
||||||
|
alias kecm='kubectl edit cm'
|
||||||
|
alias kecj='kubectl edit cj'
|
||||||
|
alias ker='kubectl edit roles'
|
||||||
|
alias kecr='kubectl edit clusterroles'
|
||||||
|
alias kerb='kubectl edit clusterrolebindings'
|
||||||
|
alias kesa='kubectl edit sa'
|
||||||
|
alias kenp='kubectl edit netpol'
|
||||||
|
|
||||||
|
# describe
|
||||||
|
alias kd='kubectl describe'
|
||||||
|
alias kdns='kubectl describe ns'
|
||||||
|
alias kdp='kubectl describe pod'
|
||||||
|
alias kds='kubectl describe secrets'
|
||||||
|
alias kdd='kubectl describe deploy'
|
||||||
|
alias kdrs='kubectl describe rs'
|
||||||
|
alias kdss='kubectl describe sts'
|
||||||
|
alias kdds='kubectl describe ds'
|
||||||
|
alias kdsvc='kubectl describe svc'
|
||||||
|
alias kdcm='kubectl describe cm'
|
||||||
|
alias kdcj='kubectl describe cj'
|
||||||
|
alias kdj='kubectl describe job'
|
||||||
|
alias kdsa='kubectl describe sa'
|
||||||
|
alias kdr='kubectl describe roles'
|
||||||
|
alias kdrb='kubectl describe rolebindings'
|
||||||
|
alias kdcr='kubectl describe clusterroles'
|
||||||
|
alias kdcrb='kubectl describe clusterrolebindings'
|
||||||
|
alias kdnp='kubectl describe netpol'
|
||||||
|
|
||||||
|
# delete
|
||||||
|
alias kdel='kubectl delete'
|
||||||
|
alias kdelns='kubectl delete ns'
|
||||||
|
alias kdels='kubectl delete secrets'
|
||||||
|
alias kdelp='kubectl delete po'
|
||||||
|
alias kdeld='kubectl delete deployment'
|
||||||
|
alias kdelrs='kubectl delete rs'
|
||||||
|
alias kdelss='kubectl delete sts'
|
||||||
|
alias kdelds='kubectl delete ds'
|
||||||
|
alias kdelsvc='kubectl delete svc'
|
||||||
|
alias kdelcm='kubectl delete cm'
|
||||||
|
alias kdelcj='kubectl delete cj'
|
||||||
|
alias kdelj='kubectl delete job'
|
||||||
|
alias kdelr='kubectl delete roles'
|
||||||
|
alias kdelrb='kubectl delete rolebindings'
|
||||||
|
alias kdelcr='kubectl delete clusterroles'
|
||||||
|
alias kdelrb='kubectl delete clusterrolebindings'
|
||||||
|
alias kdelsa='kubectl delete sa'
|
||||||
|
alias kdelnp='kubectl delete netpol'
|
||||||
|
|
||||||
|
# mock
|
||||||
|
alias kmock='kubectl create mock -o yaml --dry-run=client'
|
||||||
|
alias kmockns='kubectl create ns mock -o yaml --dry-run=client'
|
||||||
|
alias kmockcm='kubectl create cm mock -o yaml --dry-run=client'
|
||||||
|
alias kmocksa='kubectl create sa mock -o yaml --dry-run=client'
|
||||||
|
|
||||||
|
# config
|
||||||
|
alias kcfg='kubectl config'
|
||||||
|
alias kcfgv='kubectl config view'
|
||||||
|
alias kcfgns='kubectl config set-context --current --namespace'
|
||||||
|
alias kcfgcurrent='kubectl config current-context'
|
||||||
|
alias kcfggc='kubectl config get-contexts'
|
||||||
|
alias kcfgsc='kubectl config set-context'
|
||||||
|
alias kcfguc='kubectl config use-context'
|
||||||
|
alias kcfgv='kubectl config view'
|
||||||
|
|
||||||
|
# Kubescape related
|
||||||
|
alias kssbom='kubectl -n kubescape get sbomspdxv2p3s'
|
||||||
|
alias kssbomf='kubectl -n kubescape get sbomspdxv2p3filtereds'
|
||||||
|
alias kssboms='kubectl -n kubescape get sbomsummaries'
|
||||||
|
alias ksvulns='kubectl -n kubescape get vulnerabilitymanifestsummaries'
|
||||||
|
alias ksvuln='kubectl -n kubescape get vulnerabilitymanifests'
|
||||||
|
|
||||||
|
# Kubescape related with labels
|
||||||
|
alias kssboml='kubectl -n kubescape get sbomspdxv2p3s --show-labels'
|
||||||
|
alias kssbomfl='kubectl -n kubescape get sbomspdxv2p3filtereds --show-labels'
|
||||||
|
alias kssbomsl='kubectl -n kubescape get sbomsummaries --show-labels'
|
||||||
|
alias ksvulnsl='kubectl -n kubescape get vulnerabilitymanifestsummaries --show-labels'
|
||||||
|
alias ksvulnl='kubectl -n kubescape get vulnerabilitymanifests --show-labels'
|
||||||
29
shell/nu/config.nu
Normal file
29
shell/nu/config.nu
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
def line-count [row] {
|
||||||
|
open $row.path | lines | length
|
||||||
|
}
|
||||||
|
|
||||||
|
def add-line-count [row] {
|
||||||
|
$row | merge { line_count: (open $row.path | lines | length) }
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.KUBECONFIG = ("/home/allen/.kube/config")
|
||||||
|
$env.PATH = ($env.PATH | append "/home/allen/.local/share/pnpm")
|
||||||
|
$env.PATH = ($env.PATH | append "/home/allen/.local/bin")
|
||||||
|
$env.PATH = ($env.PATH | append "/home/allen/.cargo/bin")
|
||||||
|
|
||||||
|
alias c = clear
|
||||||
|
alias rb = sudo nixos-rebuild switch --flake ~/nixos-config#
|
||||||
|
alias clc = cloc . --exclude-dir=target,node_modules,.venv --exclude-ext=yml,yaml,csv -v
|
||||||
|
alias lg = lazygit
|
||||||
|
alias zxcv = shutdown now
|
||||||
|
alias qwer = reboot
|
||||||
|
alias ssd = cd /mnt/ssd1
|
||||||
|
|
||||||
|
alias woman = man
|
||||||
|
|
||||||
|
alias boy = man
|
||||||
|
alias male = man
|
||||||
|
alias girl = woman
|
||||||
|
alias female = woman
|
||||||
|
|
||||||
|
source ~/.config/nushell/nu/kube.nu
|
||||||
94
shell/nu/kube.nu
Normal file
94
shell/nu/kube.nu
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
alias kcfgcj = kubectl config cronjob
|
||||||
|
alias kcfgcm = kubectl config configmap
|
||||||
|
alias kcfgcr = kubectl config clusterroles
|
||||||
|
alias kcfgd = kubectl config deployment
|
||||||
|
alias kcfgds = kubectl config daemonset
|
||||||
|
alias kcfgj = kubectl config job
|
||||||
|
alias kcfgn = kubectl config node
|
||||||
|
alias kcfgnp = kubectl config networkpolicy
|
||||||
|
alias kcfgns = kubectl config namespace
|
||||||
|
alias kcfgp = kubectl config pods
|
||||||
|
alias kcfgr = kubectl config roles
|
||||||
|
alias kcfgrb = kubectl config rolebindings
|
||||||
|
alias kcfgrs = kubectl config replicaset
|
||||||
|
alias kcfgs = kubectl config secrets
|
||||||
|
alias kcfgsa = kubectl config serviceaccount
|
||||||
|
alias kcfgss = kubectl config statefulset
|
||||||
|
alias kcfgsvc = kubectl config service
|
||||||
|
alias kdcj = kubectl describe cronjob
|
||||||
|
alias kdcm = kubectl describe configmap
|
||||||
|
alias kdcr = kubectl describe clusterroles
|
||||||
|
alias kdd = kubectl describe deployment
|
||||||
|
alias kdds = kubectl describe daemonset
|
||||||
|
alias kdj = kubectl describe job
|
||||||
|
alias kdn = kubectl describe node
|
||||||
|
alias kdnp = kubectl describe networkpolicy
|
||||||
|
alias kdns = kubectl describe namespace
|
||||||
|
alias kdp = kubectl describe pods
|
||||||
|
alias kdr = kubectl describe roles
|
||||||
|
alias kdrb = kubectl describe rolebindings
|
||||||
|
alias kdrs = kubectl describe replicaset
|
||||||
|
alias kds = kubectl describe secrets
|
||||||
|
alias kdsa = kubectl describe serviceaccount
|
||||||
|
alias kdss = kubectl describe statefulset
|
||||||
|
alias kdsvc = kubectl describe service
|
||||||
|
alias kdelcj = kubectl delete cronjob
|
||||||
|
alias kdelcm = kubectl delete configmap
|
||||||
|
alias kdelcr = kubectl delete clusterroles
|
||||||
|
alias kdeld = kubectl delete deployment
|
||||||
|
alias kdelds = kubectl delete daemonset
|
||||||
|
alias kdelj = kubectl delete job
|
||||||
|
alias kdeln = kubectl delete node
|
||||||
|
alias kdelnp = kubectl delete networkpolicy
|
||||||
|
alias kdelns = kubectl delete namespace
|
||||||
|
alias kdelp = kubectl delete pods
|
||||||
|
alias kdelr = kubectl delete roles
|
||||||
|
alias kdelrb = kubectl delete rolebindings
|
||||||
|
alias kdelrs = kubectl delete replicaset
|
||||||
|
alias kdels = kubectl delete secrets
|
||||||
|
alias kdelsa = kubectl delete serviceaccount
|
||||||
|
alias kdelss = kubectl delete statefulset
|
||||||
|
alias kdelsvc = kubectl delete service
|
||||||
|
alias kecj = kubectl edit cronjob
|
||||||
|
alias kecm = kubectl edit configmap
|
||||||
|
alias kecr = kubectl edit clusterroles
|
||||||
|
alias ked = kubectl edit deployment
|
||||||
|
alias keds = kubectl edit daemonset
|
||||||
|
alias kej = kubectl edit job
|
||||||
|
alias ken = kubectl edit node
|
||||||
|
alias kenp = kubectl edit networkpolicy
|
||||||
|
alias kens = kubectl edit namespace
|
||||||
|
alias kep = kubectl edit pods
|
||||||
|
alias ker = kubectl edit roles
|
||||||
|
alias kerb = kubectl edit rolebindings
|
||||||
|
alias kers = kubectl edit replicaset
|
||||||
|
alias kes = kubectl edit secrets
|
||||||
|
alias kesa = kubectl edit serviceaccount
|
||||||
|
alias kess = kubectl edit statefulset
|
||||||
|
alias kesvc = kubectl edit service
|
||||||
|
alias kgcj = kubectl get cronjob
|
||||||
|
alias kgcm = kubectl get configmap
|
||||||
|
alias kgcr = kubectl get clusterroles
|
||||||
|
alias kgd = kubectl get deployment
|
||||||
|
alias kgds = kubectl get daemonset
|
||||||
|
alias kgj = kubectl get job
|
||||||
|
alias kgn = kubectl get node
|
||||||
|
alias kgnp = kubectl get networkpolicy
|
||||||
|
alias kgns = kubectl get namespace
|
||||||
|
alias kgp = kubectl get pods
|
||||||
|
alias kgr = kubectl get roles
|
||||||
|
alias kgrb = kubectl get rolebindings
|
||||||
|
alias kgrs = kubectl get replicaset
|
||||||
|
alias kgs = kubectl get secrets
|
||||||
|
alias kgsa = kubectl get serviceaccount
|
||||||
|
alias kgss = kubectl get statefulset
|
||||||
|
alias kgsvc = kubectl get service
|
||||||
|
alias kexec = kubectl exec -it
|
||||||
|
alias kl = kubectl logs
|
||||||
|
alias kpf = kubectl port-forward
|
||||||
|
alias kcfg = kubectl config
|
||||||
|
alias kd = kubectl describe
|
||||||
|
alias kdel = kubectl delete
|
||||||
|
alias ke = kubectl edit
|
||||||
|
alias kg = kubectl get
|
||||||
|
alias k = kubectl
|
||||||
Reference in New Issue
Block a user