summaryrefslogtreecommitdiff
path: root/.github/workflows/test.yml
blob: 63c155b60054658f4ffe78f55274eb8c45486b75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
name: "Test"
on:
  pull_request:
  push:
    branches:
      - master

env:
  NIXPKGS_BRANCH: nixpkgs-unstable
  NIX_DARWIN_BRANCH: master
  NIX_VERSION: 2.24.11

jobs:
  # The `test-stable` and `install-against-stable` job names are
  # load‐bearing, despite their inaccuracy on the unstable branch, as
  # they are set as required checks in the repository configuration,
  # which only repository admins can change.
  #
  # TODO: Change them once the repository configuration is updated.

  test-stable:
    runs-on: macos-13
    steps:
    - uses: actions/checkout@v4
    - name: Install Nix
      uses: cachix/install-nix-action@v30
      with:
        install_url: https://releases.nixos.org/nix/nix-${{ env.NIX_VERSION }}/install
    - run: nix flake check --override-input nixpkgs nixpkgs/${{ env.NIXPKGS_BRANCH }}

  install-against-stable:
    runs-on: macos-13
    timeout-minutes: 30
    steps:
    - uses: actions/checkout@v4
    - name: Install Nix
      uses: cachix/install-nix-action@v30
      with:
        install_url: https://releases.nixos.org/nix/nix-${{ env.NIX_VERSION }}/install
        nix_path: nixpkgs=channel:${{ env.NIXPKGS_BRANCH }}
    - name: Install channels
      run: |
        nix-channel --add https://github.com/LnL7/nix-darwin/archive/${{ env.NIX_DARWIN_BRANCH }}.tar.gz darwin
        nix-channel --add https://nixos.org/channels/${{ env.NIXPKGS_BRANCH }} nixpkgs
        nix-channel --update
    - name: Install nix-darwin
      run: |
        export NIX_PATH=$HOME/.nix-defexpr/channels

        mkdir -p ~/.config/nix-darwin
        cp modules/examples/simple.nix ~/.config/nix-darwin/configuration.nix

        nixConfHash=$(shasum -a 256 /etc/nix/nix.conf | cut -d ' ' -f 1)
        /usr/bin/sed -i.bak \
          "s/# programs.fish.enable = true;/nix.settings.access-tokens = [ \"github.com=\${{ secrets.GITHUB_TOKEN }}\" ]; environment.etc.\"nix\/nix.conf\".knownSha256Hashes = [ \"$nixConfHash\" ];/" \
          ~/.config/nix-darwin/configuration.nix

        nix run .#darwin-rebuild \
          -- switch \
          -I darwin-config=$HOME/.config/nix-darwin/configuration.nix
    - name: Switch to new configuration
      run: |
        . /etc/bashrc

        /usr/bin/sed -i.bak \
          "s/pkgs.vim/pkgs.hello/" \
          ~/.config/nix-darwin/configuration.nix

        darwin-rebuild switch -I darwin=.

        hello
    - name: Test uninstallation of nix-darwin
      run: |
        # We need to specify `--extra-experimental-features` because `experimental-features` is set by
        # `cachix/install-nix-action` but not by our default config above
        nix run .#darwin-uninstaller \
          --extra-experimental-features "nix-command flakes" \
          --override-input nixpkgs nixpkgs/${{ env.NIXPKGS_BRANCH }}
        nix run .#darwin-uninstaller.tests.uninstaller \
          --extra-experimental-features "nix-command flakes" \
          --override-input nixpkgs nixpkgs/${{ env.NIXPKGS_BRANCH }}

  install-flake:
    runs-on: macos-13
    timeout-minutes: 30
    steps:
    - uses: actions/checkout@v4
    - name: Install Nix
      uses: cachix/install-nix-action@v30
      with:
        install_url: https://releases.nixos.org/nix/nix-${{ env.NIX_VERSION }}/install
    - name: Install nix-darwin
      run: |
        mkdir -p ~/.config/nix-darwin
        darwin=$(pwd)
        pushd ~/.config/nix-darwin
          nix flake init -t $darwin
          nixConfHash=$(shasum -a 256 /etc/nix/nix.conf | cut -d ' ' -f 1)
          /usr/bin/sed -i.bak \
            "s/# programs.fish.enable = true;/nix.settings.access-tokens = [ \"github.com=\${{ secrets.GITHUB_TOKEN }}\" ]; environment.etc.\"nix\/nix.conf\".knownSha256Hashes = [ \"$nixConfHash\" ];/" \
            flake.nix
          /usr/bin/sed -i.bak \
            's/nixpkgs.hostPlatform = "aarch64-darwin";/nixpkgs.hostPlatform = "'$(nix eval --expr builtins.currentSystem --impure --raw)'";/' \
            flake.nix
        popd
        nix run .#darwin-rebuild -- \
          switch --flake ~/.config/nix-darwin#simple \
          --override-input nix-darwin . \
          --override-input nixpkgs nixpkgs/${{ env.NIXPKGS_BRANCH }}
    - name: Switch to new configuration
      run: |
        . /etc/bashrc

        /usr/bin/sed -i.bak \
          "s/pkgs.vim/pkgs.hello/" \
          ~/.config/nix-darwin/flake.nix

        darwin-rebuild switch --flake ~/.config/nix-darwin#simple \
          --override-input nix-darwin . \
          --override-input nixpkgs nixpkgs/${{ env.NIXPKGS_BRANCH }}

        hello
    - name: Test uninstallation of nix-darwin
      run: |
        nix run .#darwin-uninstaller --override-input nixpkgs nixpkgs/${{ env.NIXPKGS_BRANCH }}
        nix run .#darwin-uninstaller.tests.uninstaller --override-input nixpkgs nixpkgs/${{ env.NIXPKGS_BRANCH }}