{"id":19532574,"url":"https://github.com/zackartz/nixos-dots","last_synced_at":"2025-08-07T14:39:58.282Z","repository":{"id":144313304,"uuid":"593948334","full_name":"zackartz/nixos-dots","owner":"zackartz","description":"my personal nixos dotfiles c:","archived":false,"fork":false,"pushed_at":"2024-10-30T00:23:50.000Z","size":17431,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-30T02:50:16.681Z","etag":null,"topics":["dotfiles","home-manager","hyprland","kitty","linux","neovim","nix","nixos","nvim","snowfall","tmux"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zackartz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-27T08:17:01.000Z","updated_at":"2024-10-30T00:23:54.000Z","dependencies_parsed_at":"2024-11-06T19:40:46.780Z","dependency_job_id":null,"html_url":"https://github.com/zackartz/nixos-dots","commit_stats":null,"previous_names":["zackartz/nixos-dots"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackartz%2Fnixos-dots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackartz%2Fnixos-dots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackartz%2Fnixos-dots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zackartz%2Fnixos-dots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zackartz","download_url":"https://codeload.github.com/zackartz/nixos-dots/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224036376,"owners_count":17245035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfiles","home-manager","hyprland","kitty","linux","neovim","nix","nixos","nvim","snowfall","tmux"],"created_at":"2024-11-11T01:52:05.657Z","updated_at":"2024-11-11T01:52:06.609Z","avatar_url":"https://github.com/zackartz.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zack's nixos dotfiles\n\n![image](https://github.com/zackartz/nixos-dots/assets/34588810/0f4c85c2-f9e8-4de3-89c1-0a95c0ab681f)\n\nmy customized versions of other's dotfiles\n\nmajor credits to [sioodmy](https://github.com/sioodmy/dotfiles) and [luckasRanarison](https://github.com/luckasRanarison/nvimrc).\n\ncould not have done this without their work :)\n\n## Installation Instructions\n\n### Step 0: Install NixOS Normally\n\nGrab the [nixos iso](https://nixos.org/download/) and install nixos on to your computer using the graphical installer.\n\n\u003e [!WARNING]\n\u003e You can choose whatever desktop environment you want, but make sure the username you choose is the one you will want to continue with!\n\n\u003e [!TIP]\n\u003e You can use [nixos anywhere](https://github.com/nix-community/nixos-anywhere) to install your config to other systems (or like, a server) via ssh once you have your desktop installed :)\n\n### Step 1: Enable Flakes and the Nix command\n\nRight now the configuration you installed resides in `/etc/nixos/configuration.nix`, we want to edit that file to enable the `nix` command and the Flake feature. Simply add this line to that file:\n\n```nix\nnix.settings.experimental-features = [ \"nix-command\" \"flakes\" ];\n```\n\nAfter this is done, go ahead and run `sudo nixos-rebuild switch`.\n\n### Step 2: Cloning the Github Repo\n\nGo ahead and create a nix shell with git with the following:\n\n```bash\nnix shell nixpkgs#git\ngit clone https://github.com/zackartz/nixos-dots.git nixos\n```\n\n\u003e [!WARNING]\n\u003e Various scripts expect your local config to be at `~/nixos`, by changing the `FLAKE` sessionVariable in `modules/home/shells/zsh/default.nix` you can choose a different path.\n\n### Step 3: Adding a new `system` and `home`\n\nThis config is built with [home-manager](https://github.com/nix-community/home-manager), which allows us to declare config files in our home directory and install user-specific applications.\n\nWith this, it also uses [snowfall](https://github.com/snowfallorg/lib) which is a directory-oriented opinionated way of structuring your flake, files added to `systems` or `homes` get picked up and auto exported from our flake, and anything in `lib`, `packages`, or `overlays` are exported and automatically shared within our flake.\n\nLet's start with the `system`.\n\nCreate a new file in `systems/x86_64-linux/\u003cyour-hostname\u003e/default.nix` with the following contents.\n\n```nix\n{\n  pkgs,\n  lib,\n  system,\n  inputs,\n  config,\n  ...\n}: {\n  imports = [./hardware-configuration.nix];\n\n  hardware.audio.enable = true;\n  hardware.nvidia.enable = false; # Enable if you have a nvidia GPU\n  ui.fonts.enable = true;\n\n  protocols.wayland.enable = true;\n\n  services.fstrim.enable = true; # Optional, improve SSD lifespan\n  services.xserver.enable = true; # Optional, but recommended (allows XWayland to work)\n  services.gnome.gnome-keyring.enable = true;\n\n  # Bootloader.\n  boot.loader.systemd-boot.enable = lib.mkForce false;\n  boot.lanzaboote = {\n    enable = true;\n    pkiBundle = \"/etc/secureboot\";\n  };\n  boot.loader.efi.canTouchEfiVariables = true;\n\n  networking.hostName = \"earth\"; # Define your hostname. MUST BE THE SAME AS THE HOSTNAME YOU SPECIFIED EARLIER!!!\n\n  # services.openssh = {\n  #   enable = true;\n  #   PasswordAuthentication = true;\n  # };\n\n  time.timeZone = \"America/Detroit\"; # Change to your TZ\n\n  programs.zsh.enable = true;\n  # REMEMBER TO CHANGE TO YOUR USERNAME\n  users.users.zoey = {\n    isNormalUser = true;\n    description = \"zoey\";\n    extraGroups = [\"networkmanager\" \"wheel\"];\n    shell = pkgs.zsh;\n  };\n\n  # CHANGE USERNAME HERE TOO\n  snowfallorg.users.zoey = {\n    create = true;\n    admin = false;\n\n    home = {\n      enable = true;\n    };\n  };\n\n  catppuccin.enable = true; # If you want your TTY to be catppuccin too haha\n}\n```\n\nOne note, change the `# Bootloader` section to what is currently in `/etc/nixos/configuration.nix` so that the bootloader config stays the same.\n\nNice! We're also going to need the `hardware-configuration.nix` for your system, copy that file from `/etc/nixos/hardware-configuration.nix` so it sits alongside the `default.nix` file.\n\nNow, lets add a file to define your home. Create a file at `homes/x86_64-linux/\u003cyour-username\u003e@\u003cyour-hostname\u003e/default.nix`.\n\n```nix\n{\n  inputs,\n  pkgs,\n  system,\n  lib,\n  ...\n}: {\n  wms.hyprland.enable = true; # Hyprland is the only fully-supported window manager in my config atm.\n  apps = {\n    web.librewolf.enable = true; # can also use firefox\n    web.librewolf.setDefault = true;\n\n    tools.git.enable = true;\n    tools.tmux.enable = true;\n    tools.neovim.enable = true;\n    tools.skim.enable = true;\n    tools.starship.enable = true;\n    tools.direnv.enable = true;\n    tools.tealdeer.enable = true;\n    tools.bat.enable = true;\n\n    tools.gh.enable = true;\n\n    term.kitty.enable = true;\n\n    music.spotify.enable = true; # disable if you don't use spotify\n\n    helpers = {\n      anyrun.enable = true;\n      ags.enable = true;\n    };\n  };\n\n  shells.zsh.enable = true;\n\n  rice.gtk.enable = true;\n\n  services.lock.enable = true;\n\n  xdg.enable = true;\n\n  programs = {\n    gpg.enable = true;\n    man.enable = true;\n    eza.enable = true;\n    dircolors = {\n      enable = true;\n      enableZshIntegration = true;\n    };\n  };\n\n  catppuccin.enable = true;\n  catppuccin.flavor = \"macchiato\";\n  catppuccin.accent = \"pink\";\n\n  # Add any packages you want in your path here!\n  home.packages = [\n    pkgs.ungoogled-chromium\n\n    pkgs.postman\n    pkgs.mosh\n\n    pkgs.dconf\n    pkgs.wl-clipboard\n    pkgs.pavucontrol\n    pkgs.wlogout\n    pkgs.sway-audio-idle-inhibit\n    pkgs.grim\n    pkgs.slurp\n\n    pkgs.xfce.thunar\n    pkgs.feh\n    pkgs.nitch\n    pkgs.nix-output-monitor\n\n    pkgs.nh\n    pkgs.dwl\n\n    pkgs.custom.rebuild\n    pkgs.custom.powermenu\n  ];\n\n  programs.zoxide = {\n    enable = true;\n    enableZshIntegration = true;\n    options = [\"--cmd cd\"];\n  };\n\n  programs.cava.enable = true;\n\n  programs.btop = {\n    enable = true;\n    extraConfig = ''\n      update_ms = 100\n      vim_keys = true\n    '';\n  };\n\n  programs.lazygit.enable = true;\n  programs.fzf.enable = true;\n\n  systemd.user.services.xwaylandvideobridge = {\n    Unit = {\n      Description = \"Tool to make it easy to stream wayland windows and screens to exisiting applications running under Xwayland\";\n    };\n    Service = {\n      Type = \"simple\";\n      ExecStart = lib.getExe pkgs.xwaylandvideobridge;\n      Restart = \"on-failure\";\n    };\n    Install = {\n      WantedBy = [\"default.target\"];\n    };\n  };\n\n  services = {\n    gpg-agent = {\n      enable = true;\n      pinentryPackage = lib.mkForce pkgs.pinentry-gnome3;\n      enableSshSupport = true;\n      enableZshIntegration = true;\n    };\n  };\n}\n```\n\nThis is a pretty minimal config, (with some neat applications), but feel free to disable any you don't want or need!\n\n### Step 4: Installing the config\n\nOnce you have all that, run these two commands to install and build the config!\n\n```bash\ngit add -A # add the new files you created\nsudo nixos-rebuild switch --flake ~/nixos#\u003cyour-hostname\u003e # replace the ~/nixos with the location of the config if you changed it.\n```\n\nGo ahead and reboot and you should be in the new config, tada!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzackartz%2Fnixos-dots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzackartz%2Fnixos-dots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzackartz%2Fnixos-dots/lists"}