diff options
| author | Shubham Saini <me@ubh.sh> | 2023-09-25 10:25:31 +0000 |
|---|---|---|
| committer | Shubham Saini <me@ubh.sh> | 2023-09-25 10:25:31 +0000 |
| commit | dad139cd5b4d575d29aa5b3ace3003fc51332c10 (patch) | |
| tree | a5df9e48bf3d890d242fe0876a858219803ca6a1 | |
init
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | flake.lock | 49 | ||||
| -rw-r--r-- | flake.nix | 32 | ||||
| -rw-r--r-- | home.nix | 79 | ||||
| -rw-r--r-- | hosts/oracle/configuration.nix | 91 | ||||
| -rw-r--r-- | hosts/oracle/hardware-configuration.nix | 42 |
6 files changed, 294 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2be92b --- /dev/null +++ b/.gitignore | |||
| @@ -0,0 +1 @@ | |||
| result | |||
diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..4bf0850 --- /dev/null +++ b/flake.lock | |||
| @@ -0,0 +1,49 @@ | |||
| 1 | { | ||
| 2 | "nodes": { | ||
| 3 | "home-manager": { | ||
| 4 | "inputs": { | ||
| 5 | "nixpkgs": [ | ||
| 6 | "nixpkgs" | ||
| 7 | ] | ||
| 8 | }, | ||
| 9 | "locked": { | ||
| 10 | "lastModified": 1695108154, | ||
| 11 | "narHash": "sha256-gSg7UTVtls2yO9lKtP0yb66XBHT1Fx5qZSZbGMpSn2c=", | ||
| 12 | "owner": "nix-community", | ||
| 13 | "repo": "home-manager", | ||
| 14 | "rev": "07682fff75d41f18327a871088d20af2710d4744", | ||
| 15 | "type": "github" | ||
| 16 | }, | ||
| 17 | "original": { | ||
| 18 | "owner": "nix-community", | ||
| 19 | "ref": "release-23.05", | ||
| 20 | "repo": "home-manager", | ||
| 21 | "type": "github" | ||
| 22 | } | ||
| 23 | }, | ||
| 24 | "nixpkgs": { | ||
| 25 | "locked": { | ||
| 26 | "lastModified": 1695559356, | ||
| 27 | "narHash": "sha256-kXZ1pUoImD9OEbPCwpTz4tHsNTr4CIyIfXb3ocuR8sI=", | ||
| 28 | "owner": "nixos", | ||
| 29 | "repo": "nixpkgs", | ||
| 30 | "rev": "261abe8a44a7e8392598d038d2e01f7b33cf26d0", | ||
| 31 | "type": "github" | ||
| 32 | }, | ||
| 33 | "original": { | ||
| 34 | "owner": "nixos", | ||
| 35 | "ref": "nixos-23.05", | ||
| 36 | "repo": "nixpkgs", | ||
| 37 | "type": "github" | ||
| 38 | } | ||
| 39 | }, | ||
| 40 | "root": { | ||
| 41 | "inputs": { | ||
| 42 | "home-manager": "home-manager", | ||
| 43 | "nixpkgs": "nixpkgs" | ||
| 44 | } | ||
| 45 | } | ||
| 46 | }, | ||
| 47 | "root": "root", | ||
| 48 | "version": 7 | ||
| 49 | } | ||
diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..7f3d0b9 --- /dev/null +++ b/flake.nix | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | { | ||
| 2 | description = "My nix config"; | ||
| 3 | inputs = { | ||
| 4 | nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05"; | ||
| 5 | |||
| 6 | home-manager = { | ||
| 7 | url = "github:nix-community/home-manager/release-23.05"; | ||
| 8 | inputs.nixpkgs.follows = "nixpkgs"; | ||
| 9 | }; | ||
| 10 | }; | ||
| 11 | |||
| 12 | outputs = { self, nixpkgs, home-manager, ... }: { | ||
| 13 | nixosConfigurations = { | ||
| 14 | oracle = nixpkgs.lib.nixosSystem { | ||
| 15 | system = "x86_64-linux"; | ||
| 16 | modules = [ | ||
| 17 | { | ||
| 18 | imports = [ ./hosts/oracle/configuration.nix ]; | ||
| 19 | } | ||
| 20 | home-manager.nixosModules.home-manager | ||
| 21 | { | ||
| 22 | home-manager.useGlobalPkgs = true; | ||
| 23 | home-manager.useUserPackages = true; | ||
| 24 | home-manager.users.shubh = { | ||
| 25 | imports = [ ./home.nix ]; | ||
| 26 | }; | ||
| 27 | } | ||
| 28 | ]; | ||
| 29 | }; | ||
| 30 | }; | ||
| 31 | }; | ||
| 32 | } | ||
diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..7de67a9 --- /dev/null +++ b/home.nix | |||
| @@ -0,0 +1,79 @@ | |||
| 1 | { config, pkgs, ... }: | ||
| 2 | |||
| 3 | { | ||
| 4 | home.username = "shubh"; | ||
| 5 | home.homeDirectory = "/home/shubh"; | ||
| 6 | |||
| 7 | # You should not change this value, even if you update Home Manager. If you do | ||
| 8 | # want to update the value, then make sure to first check the Home Manager | ||
| 9 | # release notes. | ||
| 10 | home.stateVersion = "23.05"; | ||
| 11 | |||
| 12 | home.packages = with pkgs; [ | ||
| 13 | git | ||
| 14 | unzip | ||
| 15 | wget | ||
| 16 | gnupg | ||
| 17 | pinentry | ||
| 18 | wl-clipboard | ||
| 19 | pass | ||
| 20 | tmux | ||
| 21 | fzf | ||
| 22 | firefox | ||
| 23 | libreoffice-qt | ||
| 24 | # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) | ||
| 25 | ]; | ||
| 26 | |||
| 27 | programs.home-manager.enable = true; | ||
| 28 | programs.zsh = { | ||
| 29 | enable = true; | ||
| 30 | enableCompletion = true; | ||
| 31 | shellAliases = { | ||
| 32 | ll = "ls -l"; | ||
| 33 | v = "nvim"; | ||
| 34 | o = "xdg-open"; | ||
| 35 | t = "tmux"; | ||
| 36 | update = "sudo nixos-rebuild switch --flake ~/nix"; | ||
| 37 | }; | ||
| 38 | history = { | ||
| 39 | size = 10000; | ||
| 40 | path = "${config.xdg.dataHome}/zsh/history"; | ||
| 41 | }; | ||
| 42 | oh-my-zsh = { | ||
| 43 | enable = true; | ||
| 44 | plugins = [ "git" "kubectl" "sudo" ]; | ||
| 45 | theme = "robbyrussell"; | ||
| 46 | }; | ||
| 47 | }; | ||
| 48 | programs.fzf = { | ||
| 49 | enable = true; | ||
| 50 | enableZshIntegration = true; | ||
| 51 | defaultOptions = [ "--height 40%" "--layout=reverse" "--border" ]; | ||
| 52 | }; | ||
| 53 | programs.git = { | ||
| 54 | enable = true; | ||
| 55 | userEmail = "me@ubh.sh"; | ||
| 56 | userName = "Shubham Saini"; | ||
| 57 | signing = { | ||
| 58 | key = "E0404DDE4BCF9DB5"; | ||
| 59 | signByDefault = true; | ||
| 60 | }; | ||
| 61 | }; | ||
| 62 | |||
| 63 | services.gpg-agent = { | ||
| 64 | enable = true; | ||
| 65 | pinentryFlavor = "qt"; | ||
| 66 | }; | ||
| 67 | |||
| 68 | xdg = { | ||
| 69 | userDirs = { | ||
| 70 | enable = true; | ||
| 71 | desktop = "\$HOME/desktop"; | ||
| 72 | documents = "\$HOME/docs"; | ||
| 73 | download = "\$HOME/downloads"; | ||
| 74 | pictures = "\$HOME/pics"; | ||
| 75 | music = "\$HOME/music"; | ||
| 76 | videos = "\$HOME/vids"; | ||
| 77 | }; | ||
| 78 | }; | ||
| 79 | } | ||
diff --git a/hosts/oracle/configuration.nix b/hosts/oracle/configuration.nix new file mode 100644 index 0000000..500906b --- /dev/null +++ b/hosts/oracle/configuration.nix | |||
| @@ -0,0 +1,91 @@ | |||
| 1 | { config, pkgs, ... }: | ||
| 2 | |||
| 3 | { | ||
| 4 | imports = | ||
| 5 | [ | ||
| 6 | ./hardware-configuration.nix | ||
| 7 | ]; | ||
| 8 | |||
| 9 | boot.loader.systemd-boot.enable = true; | ||
| 10 | boot.loader.efi.canTouchEfiVariables = true; | ||
| 11 | |||
| 12 | # swap on luks | ||
| 13 | boot.initrd.secrets = { | ||
| 14 | "/crypto_keyfile.bin" = null; | ||
| 15 | }; | ||
| 16 | boot.initrd.luks.devices."luks-5cbabb1a-ed3b-44da-b4c0-894c2265d8c0".device = "/dev/disk/by-uuid/5cbabb1a-ed3b-44da-b4c0-894c2265d8c0"; | ||
| 17 | boot.initrd.luks.devices."luks-5cbabb1a-ed3b-44da-b4c0-894c2265d8c0".keyFile = "/crypto_keyfile.bin"; | ||
| 18 | |||
| 19 | networking.hostName = "oracle"; | ||
| 20 | networking.networkmanager.enable = true; | ||
| 21 | |||
| 22 | time.timeZone = "America/Vancouver"; | ||
| 23 | i18n.defaultLocale = "en_CA.UTF-8"; | ||
| 24 | sound.enable = true; | ||
| 25 | hardware.pulseaudio.enable = false; | ||
| 26 | hardware.bluetooth.enable = true; | ||
| 27 | security.rtkit.enable = true; | ||
| 28 | programs.zsh.enable = true; | ||
| 29 | |||
| 30 | users.users.shubh = { | ||
| 31 | isNormalUser = true; | ||
| 32 | shell = pkgs.zsh; | ||
| 33 | extraGroups = [ "networkmanager" "wheel" "docker" ]; | ||
| 34 | }; | ||
| 35 | |||
| 36 | nixpkgs.config.allowUnfree = true; | ||
| 37 | |||
| 38 | environment.systemPackages = with pkgs; [ | ||
| 39 | neovim | ||
| 40 | git | ||
| 41 | interception-tools | ||
| 42 | ]; | ||
| 43 | |||
| 44 | services = { | ||
| 45 | xserver = { | ||
| 46 | enable = true; | ||
| 47 | layout = "us"; | ||
| 48 | displayManager = { | ||
| 49 | sddm.enable = true; | ||
| 50 | defaultSession = "plasmawayland"; | ||
| 51 | }; | ||
| 52 | desktopManager.plasma5.enable = true; | ||
| 53 | libinput.enable = true; | ||
| 54 | }; | ||
| 55 | pipewire = { | ||
| 56 | enable = true; | ||
| 57 | alsa.enable = true; | ||
| 58 | alsa.support32Bit = true; | ||
| 59 | pulse.enable = true; | ||
| 60 | }; | ||
| 61 | interception-tools = { | ||
| 62 | enable = true; | ||
| 63 | plugins = with pkgs; [ | ||
| 64 | interception-tools-plugins.caps2esc | ||
| 65 | ]; | ||
| 66 | udevmonConfig = '' | ||
| 67 | - JOB: "intercept -g $DEVNODE | caps2esc | uinput -d $DEVNODE" | ||
| 68 | - JOB: "${pkgs.interception-tools}/bin/intercept -g $DEVNODE | ${pkgs.interception-tools-plugins.caps2esc}/bin/caps2esc | ${pkgs.interception-tools}/bin/uinput -d $DEVNODE" | ||
| 69 | DEVICE: | ||
| 70 | EVENTS: | ||
| 71 | EV_KEY: [KEY_CAPSLOCK, KEY_ESC] | ||
| 72 | ''; | ||
| 73 | }; | ||
| 74 | }; | ||
| 75 | virtualisation.docker.enable = true; | ||
| 76 | |||
| 77 | nix = { | ||
| 78 | extraOptions = '' | ||
| 79 | experimental-features = nix-command flakes | ||
| 80 | ''; | ||
| 81 | }; | ||
| 82 | |||
| 83 | # This value determines the NixOS release from which the default | ||
| 84 | # settings for stateful data, like file locations and database versions | ||
| 85 | # on your system were taken. It‘s perfectly fine and recommended to leave | ||
| 86 | # this value at the release version of the first install of this system. | ||
| 87 | # Before changing this value read the documentation for this option | ||
| 88 | # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). | ||
| 89 | system.stateVersion = "23.05"; # Did you read the comment? | ||
| 90 | |||
| 91 | } | ||
diff --git a/hosts/oracle/hardware-configuration.nix b/hosts/oracle/hardware-configuration.nix new file mode 100644 index 0000000..1d57a92 --- /dev/null +++ b/hosts/oracle/hardware-configuration.nix | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | # Do not modify this file! It was generated by ‘nixos-generate-config’ | ||
| 2 | # and may be overwritten by future invocations. Please make changes | ||
| 3 | # to /etc/nixos/configuration.nix instead. | ||
| 4 | { config, lib, pkgs, modulesPath, ... }: | ||
| 5 | |||
| 6 | { | ||
| 7 | imports = | ||
| 8 | [ (modulesPath + "/installer/scan/not-detected.nix") | ||
| 9 | ]; | ||
| 10 | |||
| 11 | boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" ]; | ||
| 12 | boot.initrd.kernelModules = [ ]; | ||
| 13 | boot.kernelModules = [ "kvm-amd" ]; | ||
| 14 | boot.extraModulePackages = [ ]; | ||
| 15 | |||
| 16 | fileSystems."/" = | ||
| 17 | { device = "/dev/disk/by-uuid/84cae4ab-2829-4af1-9fe8-1a57128b1fa1"; | ||
| 18 | fsType = "ext4"; | ||
| 19 | }; | ||
| 20 | |||
| 21 | boot.initrd.luks.devices."luks-8bf40ec5-be29-41f3-97c8-ed6a6beec6d3".device = "/dev/disk/by-uuid/8bf40ec5-be29-41f3-97c8-ed6a6beec6d3"; | ||
| 22 | |||
| 23 | fileSystems."/boot" = | ||
| 24 | { device = "/dev/disk/by-uuid/2B72-E7BD"; | ||
| 25 | fsType = "vfat"; | ||
| 26 | }; | ||
| 27 | |||
| 28 | swapDevices = | ||
| 29 | [ { device = "/dev/disk/by-uuid/3815a775-9072-4703-ab1d-267fe1287bf8"; } | ||
| 30 | ]; | ||
| 31 | |||
| 32 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking | ||
| 33 | # (the default) this is the recommended approach. When using systemd-networkd it's | ||
| 34 | # still possible to use this option, but it's recommended to use it in conjunction | ||
| 35 | # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. | ||
| 36 | networking.useDHCP = lib.mkDefault true; | ||
| 37 | # networking.interfaces.enp2s0.useDHCP = lib.mkDefault true; | ||
| 38 | # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; | ||
| 39 | |||
| 40 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||
| 41 | hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; | ||
| 42 | } | ||
