Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
217d46f
fix: add Nix 2.32 to `nix-benchmark`
Frontear Nov 10, 2025
02761ee
fix: add comment to describe `.gitignore` entries
Frontear Nov 10, 2025
4d547ef
feat!: use DankMaterialShell for Niri
Frontear Nov 11, 2025
5c3ee02
fix: sync DMS setting pre-start so that changes are visible
Frontear Nov 12, 2025
b3c0457
fix: move specialisations to their own file
Frontear Nov 15, 2025
fc763cc
fix: enable thermald based on detected hardware, drop old enable values
Frontear Nov 15, 2025
22b3664
fix: drop dead code from DMS configuration
Frontear Nov 15, 2025
03822e1
fix: remove duplicate thermald definition
Frontear Nov 17, 2025
3a0ce68
feat: drop kernel tunings for power savings
Frontear Nov 17, 2025
2428337
fix: refactor chrony into module, cleanup hosts/laptop
Frontear Nov 17, 2025
515f136
feat: new `my.defaults` module for opt-in defaults
Frontear Nov 17, 2025
6e56c95
fix: remove the now deprecated `persist-helper` program
Frontear Nov 17, 2025
7b6231c
feat: properly formatted README.md
Frontear Nov 18, 2025
da4d91c
fix: improve instructions in README.md
Frontear Nov 18, 2025
39fe9c5
feat: add another PR patch to powertop
Frontear Nov 18, 2025
f4708e9
fix: remove invalid `mkfs.btrfs` argument
Frontear Nov 18, 2025
0513677
fix: make `nixos-rollback` work when booted in a specialisation
Frontear Nov 20, 2025
9bb37e9
fix: add OBS studio to the GNOME desktop
Frontear Nov 27, 2025
a5ee795
feat: introduce the typst extension for VSCode
Frontear Nov 30, 2025
124b304
fix: repair an irreversible destruction of git history by a flake input
Frontear Dec 1, 2025
d9b0d0d
feat: bump install-nix-action for flake-check workflow
Frontear Dec 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/flake-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@v4.2.2

- name: Install Nix
uses: cachix/install-nix-action@v30
uses: cachix/install-nix-action@v31.8.4
with:
extra_nix_config: |
allow-import-from-derivation = false
Expand Down
77 changes: 66 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,72 @@
# Frontear's Dotfiles

Massively WIP!
Declarative and reproducible configuration for my systems, powered by NixOS ❄️.

## License
## Installation

1. Build the latest ISO image through Nix:

```console
$ nix build github:Frontear/dotfiles#ISO-3DT4F02.config.system.build.isoImage
```

Then, copy it to a USB drive and boot from it.

2. Create the expected partition table using the following script:
```bash
#!/usr/bin/env bash

# NOTE: run this as root.

# Declare the target disk ahead-of-time
export DISK="/dev/<DEVICE>" # e.g. /dev/sda, /dev/nvme0n1, ...

# Wipe all existing partitions from the drive
sfdisk --delete "$DISK"

# Use the GPT partition layout
sfdisk "$DISK" <<< "label: gpt"

# Create the EFI partition
sfdisk --append "$DISK" <<< ",1G,U"

> [!WARNING]
> I do not encourage you to use any of the code in this repository, as it's
> extremely personalized and not intended to work or be used outside of this
> context.
# Create the Nix partition
sfdisk --append "$DISK" <<< ",,L"

All of the content in this repository is subject to the GNU AGPL v3 or later.
# Label the newly created partitions
sfdisk --part-label "$DISK" 1 "boot"
sfdisk --part-label "$DISK" 2 "nix"
```

3. Format the created partitions with the expected fs types:

```console
$ wipefs --all /dev/disk/by-partlabel/boot
$ wipefs --all /dev/disk/by-partlabel/nix
$ mkfs.fat -F 32 /dev/disk/by-partlabel/boot
$ mkfs.btrfs -n 64k /dev/disk/by-partlabel/nix
```

4. Mount them into `/mnt` for the installer:

```console
$ mount -t tmpfs -o mode=0755,noatime,noswap,size=1G tmpfs /mnt --mkdir
$ mount -o dmask=0022,fmask=0022,noatime /dev/disk/by-partlabel/boot /mnt/boot --mkdir
$ mount -o compress=zstd:15,noatime /dev/disk/by-partlabel/nix /mnt/nix --mkdir
```

5. Install configuration to target root in `/mnt`:

```console
$ nixos-install --flake "github:Frontear/dotfiles#<HOST>" --no-channel-copy --no-root-password
```

<!--
## Usage

## Contributing
-->

## License

As an added clause, I'd appreciate any code which is derived from my works and
improves upon my code to be pull requested back onto this repository. This is
not a legally-binding requirement, and as such not an extension of the AGPL, but
something I humbly request as the code author.
[GNU AGPL v3 or later](LICENSE)
85 changes: 85 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,21 @@
flake-parts.url = "github:hercules-ci/flake-parts";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

DankMaterialShell = {
url = "github:AvengeMedia/DankMaterialShell";

inputs = {
nixpkgs.follows = "nixpkgs";
dms-cli.follows = "dms-cli";
};
};

dms-cli = {
url = "path:./nix/inputs/dms-cli";

inputs.nixpkgs.follows = "nixpkgs";
};

home-manager = {
url = "github:nix-community/home-manager";

Expand All @@ -19,6 +34,12 @@
url = "github:nix-community/nixos-facter-modules";
};

quickshell = {
url = "github:quickshell-mirror/quickshell";

inputs.nixpkgs.follows = "nixpkgs";
};

stylix = {
url = "github:nix-community/stylix";

Expand Down
6 changes: 2 additions & 4 deletions hosts/iso/configuration.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,14 @@
];

config = {
my.defaults.enable = true;

my.desktops.gnome.enable = true;

services.displayManager.autoLogin.enable = true;

environment.systemPackages = [
inputs.nixos-facter.packages.nixos-facter
];

console.keyMap = "us";
i18n.defaultLocale = "en_CA.UTF-8";
time.timeZone = "America/Toronto";
};
}
26 changes: 10 additions & 16 deletions hosts/laptop/configuration.nix
Original file line number Diff line number Diff line change
@@ -1,33 +1,27 @@
{
pkgs,
lib,
...
}:
{
imports = [
./hardware
./specialisations
];

config = {
specialisation.gnome.configuration = {
services.auto-cpufreq.enable = lib.mkForce false;


my.desktops = {
niri.enable = lib.mkForce false;
gnome.enable = true;
};
};
my.defaults.enable = true;

# Use the latest xanmod kernel, mainly for the Clear Linux patches
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest;

# Enable a desktop environment
my.desktops.niri.enable = true;
services = {
# NTP daemon that's more suitable for laptops
chrony.enable = true;

# Set locale, keymap and timezone
console.keyMap = "us";
i18n.defaultLocale = "en_CA.UTF-8";
time.timeZone = "America/Toronto";
# Use the fingerprint sensor on my laptop.
#
# TODO: detect from `facter.json`
fprintd.enable = true;
};
};
}
9 changes: 0 additions & 9 deletions hosts/laptop/hardware/default.nix
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
{
imports = [
./mounts.nix
./power-savings
];

config = {
services = {
thermald.enable = true;

fprintd.enable = true;
};
};
}
6 changes: 0 additions & 6 deletions hosts/laptop/hardware/power-savings/default.nix

This file was deleted.

30 changes: 0 additions & 30 deletions hosts/laptop/hardware/power-savings/kernel-tunings.nix

This file was deleted.

24 changes: 0 additions & 24 deletions hosts/laptop/hardware/power-savings/services.nix

This file was deleted.

Loading
Loading